以下脚本
read n
for (( c=1; c<=$n; c++ ))
do
echo "HI"
done
给出错误solution.sh: line 2: ((: c<=1: syntax error: invalid arithmetic operator (error token is "")
我正在使用BASH。 for
循环有什么问题?
编辑: 我正在使用BASH hackerrank IDE,尽管此代码与该链接中的问题没有直接关系,但出现此错误。
答案 0 :(得分:0)
我通过在1之后按Ctrl-E重现此错误消息。它看起来像这样:
$ ./1.sh
1^E
./1.sh: line 3: ((: c<=1: syntax error: invalid arithmetic operator (error token is "")
因此请确保在输入之前没有按任何奇怪的组合键。
答案 1 :(得分:0)
您需要添加此行
#!/bin/bash
位于solution.sh
的顶部。
(如果您的 bash 位于其他位置,请在终端上进行
which bash
确定其位置)
答案 2 :(得分:0)
@ picasso13只是一个疯狂的猜测,它引起了我(当我尝试使用从输入构造的数组进行循环时,会产生相同的神秘错误)。 hackerRank上有2个输入(第一个实际上是第二个的大小)。当我放弃第一个并确保我的迭代正在处理数字列表时,它解决了我的问题:
freq=()
for i in {1..100}; do
freq[$i]=0
done
read ignore
read inputs
IFS=', ' eval 'array=($inputs)'
for i in "${array[@]}"; do
(( freq[$i]++ ))
done
for i in "${!freq[@]}"; do
if [[ freq[$i] -eq 1 ]]; then
echo $i
fi
done
如果您将我的read ignore
注释掉,则会重现该问题。