Linux позволяет автоматизировать задачи с помощью команд оболочки и скриптов. Обычно мы храним числа или строки в переменных shell и скриптах. Но иногда вам может понадобиться сохранить определенную команду в переменной Bash. В этой статье мы узнаем, как сохранить команду в переменной в сценарии shell.
Как сохранить команду в переменной в сценарии Shell
Вот типичный синтаксис для хранения значения в переменной в shell.
1 | var_name=value |
После того, как значение сохранено в переменной, вы можете ссылаться на него, добавляя к переменной префикс $.
1 | $var_name |
Допустим, вы хотите сохранить в переменной shell следующую команду.
1 | ls | wc |
Если вы хотите сохранить приведенную выше команду в shell-переменной x, вам нужно сделать это, как показано ниже.
1 | x="ls | wc" |
Обратите внимание, что команду нужно заключить в кавычки, как строку. Эту строку нужно присвоить переменной shell.
Если вы хотите выполнить команду, хранящуюся в переменной, вы можете сделать это с помощью команды eval.
1 2 | eval "$x" |
На некоторых системах вы можете выполнить приведенную выше функцию eval, даже не заключая переменную оболочки $x в кавычки.
1 | eval $x |
Если вы хотите присвоить значение x другой переменной y, вы можете легко сделать это так же, как вы присваиваете любую переменную оболочки другой.
1 | y=x |
Теперь, если вы выполните команду eval для новой переменной, вы увидите тот же результат.
1 | eval $y |
Но, пожалуйста, обратите внимание, используйте функцию eval только в том случае, если в вашей команде нет переменных shell, или вы абсолютно доверяете команде, иначе вы позволите другим внедрить переменные в ваш скрипт. Например, если вы сохраните следующую команду в своем shell-скрипте, то вредоносные пользователи и программы смогут изменить значение shell-переменной $x, просто изменив значение $name.
1 | x="ls '$name' | wc" |
Заключение
В этой небольшой статье мы узнали, как сохранить команду в переменной в сценарии оболочки. Вы можете настроить его в соответствии с вашими требованиями.