Bash 脚本 while 循环将不起作用:“-le unary operator expected”
Bash script while loop won't work: "-le unary operator expected"
我正在尝试 运行 像这样的 bash 脚本:
#!/bin/bash
set i=1991
while [ $i -le 2017 ]
do
echo "looping and doing stuff"
$i++
done
echo all done
我收到以下错误:
[: -le: unary operator expected
我也试过像这样更改代码:
#!/bin/bash
set i=1991
while (( $i <= 2017 ));
do
echo "looping";
(( $i++ ));
done
echo ALL done
这给了我这个错误:
((: <= 2017 : syntax error: operand expected (error token is "<= 2017 ")
我已经试过了:
#!/bin/bash
set i=1991
while [ "$i" -le "2017" ]
do
echo "looping"
$i++
done
echo ALL done
我明白了:
[: : integer expression expected
我认为这是一个愚蠢的语法错误,但不幸的是我似乎无法弄清楚。我的 bash 版本是 4.3.48。
谢谢!
set
用于设置位置参数,不是普通变量
$ unset i
$ set i=1991
$ echo ""
i=1991
$ echo "$i"
$
i=1991
是 set
的单个参数,被视为文字字符串,而不是任何类型的赋值。
只需放下 set
:
i=1991
while (( i < 2017 ));
...
((i++))
done
我正在尝试 运行 像这样的 bash 脚本:
#!/bin/bash
set i=1991
while [ $i -le 2017 ]
do
echo "looping and doing stuff"
$i++
done
echo all done
我收到以下错误:
[: -le: unary operator expected
我也试过像这样更改代码:
#!/bin/bash
set i=1991
while (( $i <= 2017 ));
do
echo "looping";
(( $i++ ));
done
echo ALL done
这给了我这个错误:
((: <= 2017 : syntax error: operand expected (error token is "<= 2017 ")
我已经试过了:
#!/bin/bash
set i=1991
while [ "$i" -le "2017" ]
do
echo "looping"
$i++
done
echo ALL done
我明白了:
[: : integer expression expected
我认为这是一个愚蠢的语法错误,但不幸的是我似乎无法弄清楚。我的 bash 版本是 4.3.48。
谢谢!
set
用于设置位置参数,不是普通变量
$ unset i
$ set i=1991
$ echo ""
i=1991
$ echo "$i"
$
i=1991
是 set
的单个参数,被视为文字字符串,而不是任何类型的赋值。
只需放下 set
:
i=1991
while (( i < 2017 ));
...
((i++))
done