Сделать все переменные локальными и только для чтения в bash по умолчанию

Вызвать сценарий из сценария? Это глупость, это все равно что услышать: "Я хочу водить машину на машине, как это сделать? " Что такое сценарий? Сценарий - это текстовый файл ascii, для которого требуется, чтобы оболочка" интерпретировалась "или выполнялась. Он может содержать команды, но также loop (while, until) и другие конструкции, такие как if..else..fi или case..esac. Если вы имеете в виду «я хочу запустить скрипт», у вас есть два способа

bash /etc/init.d/"script I want to run"

или

/etc/init.d/"script I want to run"

ВНИМАНИЕ! Запуск некоторых сценариев от имени пользователя root без знания того, что такое сценарий , может повредить вашу систему. Перед запуском сценария прочтите его содержимое с помощью

less /etc/init.d/myscript
2
04.04.2017, 02:42
2 ответа

Используя функцию declare , вы можете сделать так, чтобы ваши переменные читались только -. При использовании в функции declare делает переменную локальной.

Синтаксис для declare следующий:

declare arg VARIABLE=value

Чтобы переменная читалась только -, вы используете аргумент-r :

declare -r num=12

Больше можно найти здесь:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_10_01.html

Не уверен, что это именно то, что вы ищете, но я думаю, что это почти то же самое, что вы собираетесь получить с помощью BASH

-2
27.01.2020, 23:10

Is there a way (like a set flag at the top of the script) to make all variables readonly and/or local -r by default?

Нет, если вы не включили редактирование источника в bash.

Однако вы можете объявить псевдоним, чтобы уменьшить семантический сахар, необходимый для установки переменной только для чтения -.

Например,

#!/bin/bash
#
shopt -s expand_aliases
alias lr='local -r'

demo() {
    lr a=123
    echo "$a"
    ((a++))      # Correctly fails with "a: readonly variable"
}

demo
-1
20.06.2020, 21:37

Теги

Похожие вопросы