неверный арифметический оператор (токен ошибки "") с циклом for - PullRequest
0 голосов
/ 05 июля 2018

Следующий скрипт

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 и, хотя этот код не имеет прямого отношения к проблеме, указанной в этой ссылке, я получаю эту ошибку.

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

Вам необходимо добавить эту строку

#!/bin/bash

вверху solution.sh.

(если ваш bash находится в другом месте, выполните в терминале

which bash

чтобы определить его местоположение)

0 голосов
/ 01 апреля 2019

@ 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, вы воспроизведете проблему.

0 голосов
/ 05 июля 2018

Я воспроизвел это сообщение об ошибке, нажав Ctrl-E после 1. Выглядело это так:

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

Поэтому убедитесь, что вы не нажимаете какую-то странную комбинацию клавиш перед вводом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...