Почему следующее не работает?: в то время как верный; сделайте “$my_command”; сон 1;готово

Добавьте эту строку к Вашему ~/.zshrc:

setopt menu_complete

Посмотрите man zshoptions для деталей.

2
13.04.2017, 15:36
2 ответа

Путем помещения кавычек вокруг $cmd, Вы просите, чтобы оболочка для выполнения команды назвала точно это. Нет команды, названной "для x в $ (..."; на самом деле в моей системе, нет даже команды, названной "для" - это - ключевое слово оболочки. Выполнять содержание $cmd, необходимо будет использовать eval.

4
27.01.2020, 21:50
  • 1
    Спасибо @Shawn. Hhmm, но почему делает вышеупомянутый синтаксис, работают на watch затем? (см. ссылку на связанный вопрос в начале OP) –  Amelio Vazquez-Reina 27.10.2011, 01:05
  • 2
    Nevermind, я думаю, что @Guilles объяснил это в watch пример "$cmd" передается как аргумент удару, который я предполагаю, объясняет, почему ему не нужно eval –  Amelio Vazquez-Reina 27.10.2011, 01:10
  • 3
    Это - потому что оболочка ожидает строку, которую это интерпретирует линию за линией; так же, как это было бы при запущении скрипта из файла. –  Shawn J. Goff 27.10.2011, 01:14

Если Вы хотите подготовить команду к выполнению в той же оболочке, используйте функцию.

cmd () {
  for x in $(my_command | grep keyword | cut -d" " -f1); do
    command2 "arguments" $x
  done
}
while true; do cmd; sleep 1; done
7
27.01.2020, 21:50

Теги

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