我试图像这样运行bash脚本:
function long_string(arr) {
let longest = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i].length > longest.length) {
longest = arr[i];
}
}
return longest;
}
let arr = ["Orebro", "Sundsvall", "Hudriksvall", "Goteborg"];
console.log(long_string(arr));
我收到以下错误:
#!/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
我认为这是一个愚蠢的语法错误,但不幸的是我似乎无法弄清楚。我的bash版本是4.3.48。
谢谢!
答案 0 :(得分:1)
set
用于设置位置参数,而不是普通变量。
$ unset i
$ set i=1991
$ echo "$1"
i=1991
$ echo "$i"
$
i=1991
是set
的单个参数,被视为文字字符串,而不是任何形式的赋值。
只需丢弃set
:
i=1991
while (( i < 2017 ));
...
((i++))
done