以下脚本
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,虽然此代码与此链接中的问题没有直接关系,但我收到此错误。
我在1之后按Ctrl-E重现了此错误消息。它看起来像这样:
$ ./1.sh
1^E
./1.sh: line 3: ((: c<=1: syntax error: invalid arithmetic operator (error token is "")
因此,请确保在输入之前没有按下某些奇怪的键组合。
您需要添加此行
#!/bin/bash
在solution.sh
的顶部。
(如果您的bash位于不同的位置,请在终端中执行
which bash
确定其位置)
@ 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
你会重现这个问题。