Я изо всех сил пытался заставить оболочку CSH легко зацикливаться и выполнять ту же команду.
Как указано в этом ответе: https://stackoverflow.com/a/1548355/1897481
Заставил меня отказаться от одного, заставляющего работать.
Наконец-то решили использовать следующие псевдонимы для запуска команд с аргументами * в цикле:
# while_cmd_w_sleep <SLEEP-TIME> <CMD + ARGS>
alias while_cmd_w_sleep '(echo '\''while (1)\n\!:2*\necho =================\necho Sleeping for \!:1.\nsleep \!:1\necho =================\nend'\'') | tcsh'
# for_n_cmd <LOOP_COUNT> <CMD + ARGS>
alias for_n_cmd '(echo '\''foreach x (`seq \!:1`)\necho =================\necho Iteration \[$x]\necho =================\n\!:2*\nend'\'') | tcsh'
# for_n_cmd_w_sleep <LOOP_COUNT> <SLEEP-TIME> <CMD + ARGS>
alias for_n_cmd_w_sleep '(echo '\''foreach x (`seq \!:1`)\necho =================\necho Iteration \[$x]\necho =================\n\!:3*\necho =================\necho Sleeping for \!:2.\nsleep \!:2\nend'\'') | tcsh'
Пример выходных данных:
$> for_n_cmd 3 echo hi
=================
Iteration [1]
=================
hi
=================
Iteration [2]
=================
hi
=================
Iteration [3]
=================
hi
Цикл while:
$> while_cmd_w_sleep 2s echo hello there
hello there
=================
Sleeping for 2s.
=================
hello there
=================
Sleeping for 2s.
=================
hello there
=================
Sleeping for 2s.
^C
* Пример, когда несколько команд выполняются в цикле:
$> for_n_cmd 3 'echo hi\\nsleep 2s\\necho done waiting'
=================
Iteration [1]
=================
hi
done waiting
=================
Iteration [2]
=================
hi
done waiting
=================
Iteration [3]
=================
hi
done waiting
В этом примере три команды echo hi
, sleep 2s
и echo done waiting
выполняются в цикле.