Ниже приведен простой скрипт, при запуске скрипта я получаю исключение, подобное строке 10: синтаксическая ошибка: неожиданный конец файла. пожалуйста, помогите.
#!/bin/sh
a=10
b=20
if [ 10 == 20 ]
then
echo "a is equal to b"
else
echo "a is not equal to b"
fi
изменение ==
кому: -eq
:
#!/bin/sh
a=10
b=20
if [ 10 -eq 20 ]
then
echo "a is equal to b"
else
echo "a is not equal to b"
fi
BTW: Вы установили переменные a и b, но Вы не используете их. Я предполагаю, что Вы предназначили:
#!/bin/sh
a=10
b=20
if [ $a -eq $b ]
then
echo "a is equal to b"
else
echo "a is not equal to b"
fi
Посмотрите man test
поскольку, что выражение в [ ]
похож. =
для сравнений строк, -eq
, -gt
, и т.д. для целочисленных сравнений.
Во-первых, я верю [ 10 == 20 ]
опечатка, и это должно быть [ "$a" == "$b" ]
. Второй @dsstorefile1 является правильным В POSIX sh, == не поддерживается.
Если Вы используете shellcheck
можно найти это сами:
$ shellcheck script.sh
In script.sh line 4:
if [ "$a" == "$b" ]
^-- SC2039: In POSIX sh, == is not supported.
Вот немного усовершенствованная версия Вашего сценария, который мог обработать первые два позиционных параметра:
#!/bin/sh
a="$1"
b="$2"
if [ "$a" = "$b" ]
then
echo "a is equal to b"
else
echo "a is not equal to b"
fi
Затем можно использовать его таким образом:
$ ./script.sh 10 20
a is not equal to b
$ ./script.sh 10 10
a is equal to b