带有for循环的无效算术运算符(错误标记为“”)

问题描述 投票:1回答:3

以下脚本

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,虽然此代码与此链接中的问题没有直接关系,但我收到此错误。

bash scripting scripting-language
3个回答
0
投票

我在1之后按Ctrl-E重现了此错误消息。它看起来像这样:

$ ./1.sh 
1^E
./1.sh: line 3: ((: c<=1: syntax error: invalid arithmetic operator (error token is "")

因此,请确保在输入之前没有按下某些奇怪的键组合。


0
投票

您需要添加此行

#!/bin/bash

solution.sh的顶部。

(如果您的bash位于不同的位置,请在终端中执行

which bash

确定其位置)


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你会重现这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.