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..我的意思是尖锐('))事实上,这是一种严肃的口音,而不是一种尖锐的口音。严肃的口音和后面的引语是否是同一个字符还有待讨论。