我需要实现类似以下的功能:
if [ $i -ne $hosts_count - 1] ; then
cmd="$cmd;"
fi
但是我收到了如下错误信息:
./installer.sh: 第124行: [: 缺少 `]'
我做错了什么?
[
无法处理测试内的算术运算。请将其更改为:if [ $i -ne $((hosts_count-1)) ]; then
编辑:@cebewee所写的也是正确的;在关闭]
之前必须放置一个空格。但是,仅这样做将导致另一个错误:额外的参数“-”
]
must be a separate argument to [
.You're assuming you can do math in [
.
if [ $i -ne $(($hosts_count - 1)) ] ; then
(( ))
来处理纯算术条件,从而避免使用[ ]
和[[ ]]
。if (( i != hosts_count - 1 )); then
cmd="$cmd"
fi
闭合的]
需要在前面加上一个空格,即写成
if [ $i -ne $hosts_count - 1 ] ; then
cmd="$cmd;"
fi
[[
可以让你拥有未加引号的空变量而不会引起问题。 - Ignacio Vazquez-Abrams