Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
unixshell脚本编写while循环_Shell_Unix_While Loop - Fatal编程技术网

unixshell脚本编写while循环

unixshell脚本编写while循环,shell,unix,while-loop,Shell,Unix,While Loop,我想写一个脚本,用while循环打印10个数字。 我尝试了以下代码 #!/bin/sh i=0 while [ $i -lt 10 ] do echo "$i" i='expr $i + 1' done 但是我得到了以下错误 sh: $i: unknown operand 有人能解释一下为什么它会引发错误吗?您希望在作业的右侧有反勾号,`,而不是单引号,。(或者更好的是,$(…),反勾号的现代替代品。)使用expr一点都不现代。POSIX标准化的数学语法是i=$((i+1

我想写一个脚本,用while循环打印10个数字。 我尝试了以下代码

#!/bin/sh
i=0 

while [ $i -lt 10 ]
do
    echo "$i"
    i='expr $i + 1'
done
但是我得到了以下错误

sh: $i: unknown operand

有人能解释一下为什么它会引发错误吗?

您希望在作业的右侧有反勾号,
`
,而不是单引号,
。(或者更好的是,
$(…)
,反勾号的现代替代品。)使用
expr
一点都不现代。POSIX标准化的数学语法是
i=$((i+1))
,而bash扩展方法只是
(++i))
参见re:
expr
let
$[…]
,以及各种其他古代构件。(这里没有介绍--
expr
,但这是因为它根本不是bash的一部分;在bash中使用
expr
时,它运行一个完全独立的程序,如
/usr/bin/expr
,而不是shell的一部分)