Je me suis battu pour obtenir shell csh pour boucler facilement sur et exécuter le même commande plus.
Comme indiqué par cette réponse: https://stackoverflow.com/a/1548355/1897481
m'a fait renoncer à l'un faisant un travail de oneliner.
Enfin réglé pour avoir les alias suivants pour exécuter des commandes avec des arguments * dans une boucle:
# 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'
sorties d'exemples:
$> for_n_cmd 3 echo hi
=================
Iteration [1]
=================
hi
=================
Iteration [2]
=================
hi
=================
Iteration [3]
=================
hi
La boucle 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
* Exemple où plusieurs commandes sont exécutées dans une boucle:
$> 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
Dans cet exemple, trois commandes echo hi
, sleep 2s
et echo done waiting
sont exécutées dans la boucle.
* Mise à jour: * Ok, ok, eh bien, je ne sais pas comment faire des boucles one-liner dans csh. La grammaire csh gère ';' et newline différemment. Ce n'est pas un interligne. – DigitalRoss