cshシェルコマンドプロンプトでwhileループを使用する方法は?

cshシェルコマンドプロンプトでwhileループを使用する方法は?

RHEL 7.2のシェルコマンドプロンプトでwhileループを試しましたが、csh次のエラーが発生しました。

$ while true
while: Expression Syntax.

bashシェルでも同様です。

ベストアンサー1

whileループイン構文は、cshBourneのようなシェルの構文とは異なります。それ:

while (arithmetic-expression)
  body
end

cshendインタラクティブな場合は、何らかの理由で認識された行にそれ自体が表示されるはずです。

~のため算術表現コマンドが成功したかどうかをテストするには{ cmd }(必要なスペース)が必要です。{ cmd }算術式は、コマンドが成功した場合(0終了状態で終了)1と評価され、そうでなければ0(コマンドが0以外の終了状態で終了した場合)と評価されます。

だから:

while ({ true })
  body
end

しかし、これはやや愚かなことです。特にこれが無限ループの場合は、次をtrue使用cshすることをお勧めします。

while (1)
  body
end

対照的に、POSIXシェルの構文は次のとおりです。

while cmd; do
  body
done

算術式を条件付きで評価するには、それを評価するコマンド(たとえば、算術拡張と組み合わせたコマンドまたはコマンドexpr)を実行する必要があります。kshlet((...))test[$((...))

おすすめ記事