shellscript: не удается присвоить переменной целое число

#shell #scripting

#оболочка #сценарии

Вопрос:

Для следующего скрипта

 #!/bin/sh

    count1=0
    noOfArg=0
    checkOtherParam()
    {
    echo $parameter
    return 4
    }
    if($count1 eq $noOfArg)
    then
        echo "Yes"
    else
        echo "No

"
fi
  

~
Я получаю сообщение об ошибке

. /sample.sh: 0: не найдено Нет

пожалуйста, дайте мне знать, в чем проблема

Ответ №1:

Я бы написал сравнение следующим образом

 if (($count1 == $noOfArg))
then
...
fi
  

Приведенное выше арифметическое сравнение, в отличие от условного сравнения, выполняемого

 if [ $count1 -eq $noOfArg ]
then
...
fi
  

Однако в этом случае я предполагаю, что они оба приведут к одному и тому же результату.

Ответ №2:

Это ваше использование круглых скобок в операторе if. Это неправильный синтаксис bash. Здесь это исправлено (без таинственной неработающей функции checkOtherParam):

 #!/bin/sh

count1=0
noOfArg=0

if [ $count1 -eq $noOfArg ]
then
    echo "Yes"
else
    echo "No"
fi
  

Ответ №3:

 if($count1 eq $noOfArg)
  

должно быть

 if [ $count1 -eq $noOfArg ]
  

Ответ №4:

вы также можете использовать case/esac

 case "$count" in
 "$noOfArg" ) echo "yes";;
 *) echo "no";;
esac