Поиск в прямом и обратном направлении реверсируется в режиме vi в zsh

Ну, если вы используете такую ​​переменную в командной строке, она будет разбита на слова, но это произойдет после синтаксического анализа таких элементов, как { (или , если ) . Итак, если вы этого хотите, вам придется использовать eval

CMD="{ echo blah ; echo bleh; } > output"
eval "$CMD"
# output contains "blah" and "bleh"

Хотя примечание eval будет запускать все, что есть в переменной в текущей оболочке, включая присваивания переменным (изменение IFS может иметь забавные эффекты для остальной части сценария, скажем). Вы можете запустить его в отдельной оболочке с помощью bash -c "$ CMD" , чтобы уменьшить, по крайней мере, проблему с назначением переменных.

Также обратите внимание, что обратные кавычки используются для захвата вывода команды и использования его в командной строке, так что это приведет к запуску вывода $ CMD также в виде команды:

$ CMD="echo foo"
$ `$CMD`
-bash: foo: command not found

Если вы перенаправляете вывод в файл, это не имеет значения, но, скорее всего, вам это тоже не нужно.

1
17.10.2015, 03:24
0 ответов

Теги

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