tcsh
次のように、Repeat内で複雑なコマンドを繰り返す方法を見つけようとします。
repeat 9999 (curl http://localhost:80/index.php; echo)
私はここで{
and}
の代わりにサブシェルを使用しています。http://hyperpolyglot.org/unix-shells、tcshにはこの機能はありません。
ただし、以前の構成では、次の予期しないエラーが発生します。
Badly placed ()'s
それでは、繰り返される複雑なコマンドをどのように使用しますかtcsh
?
andについて奇妙なことにcsh
一貫性のない古い声明があります。tcsh
http://www.grymoire.com/unix/CshTop10.txt。それで、このエラーをどのように処理するのかわかりません。
答え1
次のように「eval」を使用できると思います。
repeat 7 eval "cmd1;cmd2"
答え2
からtcsh(1)
:
repeat count command
The specified command, which is subject to the same restric‐
tions as the command in the one line if statement above, is
executed count times. [..]
if
ドキュメントには次のものがあります。
if (expr) command
[..]
command must be a simple command, not an alias, a pipeline, a
command list or a parenthesized command list, but it may have
arguments. [..]
だからそれはあなたができることではないようです。
この問題を解決するには、単純なラッパースクリプトを使用できます。
答え3
別の回避策はZSHを使用することです。
% repeat 3 (echo hi; echo there)
hi
there
hi
there
hi
there
%
答え4
repeat
組み込みコマンドですが、構文の一部ではないため、引数リストで()を簡単に使用することはできません。
Bourne Shell
制限が少なくてもtcsh
repeat -c 3 (echo a)
動作しません。
うまくいくのは次のとおりです。
(repeat -c 10 echo a)
これは、サブシェルでコマンド全体を実行するためです。しかし、さらに:
(repeat -c 3 echo a; echo b)
echo a
3回繰り返されますが、echo b
1回だけ呼び出されます。
しかし:
repeat -c 3 "echo a"
組み込みコマンドを使用して複数の簡単なコマンドを繰り返す場合は、このコマンドをお勧めしますrepeat
。repeat
これは同じように動作するため、あまり単純なコマンドでも機能しますeval
。