我试图csh
在 RHEL 7.2 的 shell 命令提示符中使用 while 循环,但出现以下错误:
$ while true
while: Expression Syntax.
Run Code Online (Sandbox Code Playgroud)
在bash
shell 中也是如此。
while
loops in的语法与csh
Bourne-like shell的语法不同。它的:
while (arithmetic-expression)
body
end
Run Code Online (Sandbox Code Playgroud)
什么时候csh
是交互式的,出于某种原因,它end
必须单独出现在一行上。
对于用于测试命令成功的算术表达式,您需要{ cmd }
(需要空格)。{ cmd }
如果命令成功(以 0 退出状态退出)或 0(如果命令以非零退出状态退出),则算术表达式中的 in 解析为 1。
所以:
while ({ true })
body
end
Run Code Online (Sandbox Code Playgroud)
但这有点愚蠢,尤其是考虑到true
它不是csh
. 对于无限循环,您宁愿使用:
while (1)
body
end
Run Code Online (Sandbox Code Playgroud)
相比之下,在 POSIX shell 中,语法是:
while cmd; do
body
done
Run Code Online (Sandbox Code Playgroud)
如果您希望条件计算算术表达式,则需要运行一个命令来计算它们,例如expr
, 或ksh
's let
/((...))
或test
/[
命令与$((...))
算术扩展相结合。
归档时间: |
|
查看次数: |
37846 次 |
最近记录: |