Я хочу написать "навсегда" функцию, чтобы я мог запускать несколько команд, пока я не убью ее вручную с помощью Ctrl-C. По сути, из командной строки zsh я знаю, что могу это сделать, и это прекрасно работает:
$ while {} { ls ; sleep 1 }
который будет повторять вызов ls
и sleep 1
, навсегда.
Я не могу понять синтаксис, чтобы превратить что-то подобное в функцию. Что-то вроде:
forever() { while {} { "${@}" } }
который я хочу затем позвонить с чем-то вроде:
$ forever ( ls ; sleep 1 )
Вероятно, это кажется глупым, когда while {} {<commands>}
и forever {<commands>}
вряд ли сильно отличаются.
Но что я действительно хочу, так как моей конечной целью является функция «вечного сна», где я могу сказать что-то вроде
$ forever-sleep 5 ls -l
$ forever-sleep 5 ( ls -l a ; ls -l b )
и он будет спать $1
секунды после выполнения команды, которую я ему даю, навсегда (пока я не убью его вручную с помощью Ctrl-C).
(Я пробовал много комбинаций и вложений ()
, (())
, {}
, []
, [[]]
, ""
, ''
и т.д., И я просто не могу понять, как получить и функция, и командная строка, чтобы не было синтаксических ошибок, ошибок синтаксического анализа и т. д.)
Так,
- Есть ли что-то похожее на эту "вечную" идею уже?
- Это возможно в функции? (Я бы предпочел функцию, которую я могу поместить в свой
.zshrc
а не иметь отдельный исполняемый скрипт оболочки.)