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
Unix shell脚本中的While循环获取错误:参数太多_Unix_Sh - Fatal编程技术网

Unix shell脚本中的While循环获取错误:参数太多

Unix shell脚本中的While循环获取错误:参数太多,unix,sh,Unix,Sh,我试图运行一个非常简单的脚本,从用户那里读取输入并不断循环。但它们显示错误[:参数太多 i=0 while [ $i -le 5 ] do echo $i i='expr $i + 1' done 错误在于您正在使用单引号而不是反引号来替换命令。换句话说,它应该是i=`expr$i+1`,而不是i='expr$i+1' 另外,@Pankrates指出,使用等价的表达式i=$(expr$i+1)可能更具可读性。如果你正在阅读的任何材料的作者使用了这种形式,那么至少可以肯定地说,你的麻烦已经避免了

我试图运行一个非常简单的脚本,从用户那里读取输入并不断循环。但它们显示错误[:参数太多

i=0
while [ $i -le 5 ]
do
echo $i
i='expr $i + 1'
done

错误在于您正在使用单引号而不是反引号来替换命令。换句话说,它应该是
i=`expr$i+1`
,而不是
i='expr$i+1'


另外,@Pankrates指出,使用等价的表达式
i=$(expr$i+1)可能更具可读性
。如果你正在阅读的任何材料的作者使用了这种形式,那么至少可以肯定地说,你的麻烦已经避免了。

错误在于你在命令替换中使用了单引号而不是反引号。换句话说,它应该是
i=`expr$i+1`
而不是
i='expr$i+1'

另外,@Pankrates指出,使用等价的表达式
i=$(expr$i+1)
可能更具可读性。如果你正在阅读的任何材料的作者使用了这种形式,至少可以肯定地说你的麻烦已经避免了。

将“”改为“急性”(`)。我已经测试过它工作正常

i=0
while [ $i -le 5 ]
do
echo $i
i=`expr $i + 1`
done
将“”更改为急性(`)。我已经测试过它工作正常

i=0
while [ $i -le 5 ]
do
echo $i
i=`expr $i + 1`
done

或者最好用
$()
@Pankrates替换过时的反勾号。你有什么理由说反勾号是“过时的”吗?可能会也可能不会有人认为
$()
更具可读性(我会在注释中对此进行编辑,谢谢),但我没有听说它们被视为过时。没错,这两种方法仍然受支持(并且符合POSIX),但
$()
由于其更好的可嵌套性而成为更可取的选择。或者最好用
$()替换过时的反勾号
@Pankrates你有什么理由说backticks是“过时的”吗?也许有人会说,
$()
更具可读性(谢谢,我会在注释中编辑),但我没有听说它们被认为是过时的。你是对的,这两种方法仍然受支持(并且符合POSIX),但
$()
由于其更好的可嵌套性而成为更可取的选择。“teldi”是什么?如果你想写“tilde”,那么这是另一个字符:
~
。哦,是的,thanx..我是说锐('))实际上,如果有什么区别的话,这是一种严肃的口音而不是尖锐的口音。严肃的口音和后面的引语是否是同一个字符还存在争议。“teldi”是什么?如果你想写“tilde”,那么那是另一个字符:
~
。哦,是的,thanx..我的意思是尖锐('))事实上,这是一种严肃的口音,而不是一种尖锐的口音。严肃的口音和后面的引语是否是同一个字符还有待讨论。