4

bashシェルから来て、ループの簡単なローリングを見逃しました(for i in(...); do ... done;)

ループの典型的なワンライナーを cshell に投稿していただけますか?

ワンライナーでお願いします。複数行ではありません thx

4

4 に答える 4

10

cshマニュアルページには次のように記載されています。

foreach、switch、while ステートメント、および if-then-else 形式の if ステートメントでは、以下に示すように、主なキーワードが入力行の単一の単純なコマンドに含まれている必要があります。

foreach と end はどちらも、別の行に単独で表示する必要があります。

else および endif という語は、入力行の先頭になければなりません。if は、入力行に単独で表示するか、else の後に表示する必要があります。

while と end は、入力行に単独で表示する必要があります。

于 2009-10-10T16:14:41.950 に答える
2

うわー、私は何csh年も台本を書いていません。しかし、ビル・ジョイは自分で書いたので、ノスタルジックな努力をする価値があると思います...

set t=(*)
foreach i ($t)
  echo $i >> /tmp/z
end

あるいは単にforeach i (*)

このループ構造は、csh に組み込まれているword listの概念とうまく連携します。これは、bash にはある程度存在しますが、vanilla posix シェルには存在しません。

set q=(how now brown cow)
echo $q[2]

ループはforeach、このデータ構造をきれいに反復します。

于 2009-10-09T15:00:40.000 に答える
1

cshオプションにもかかわらず、何とか修正したので、次のようなことができます:

printf "while ( 1 ) \n ps -aux|grep httpd \n echo 'just a new row' \n  sleep 2 \n end" | csh -f
于 2015-03-21T18:24:28.697 に答える