Bash Script - проблема с переменными и | До нашей эры - PullRequest
0 голосов
/ 05 мая 2018

Итак, у меня есть переменная, которую я хочу сравнить с другим числом в операторе if.

b=8.25
if [ $(echo "$b < 10" | bc) -ne 0 ]; then
echo "hey"
fi

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

(standard_in) 1: syntax error

Я знаю, что проблема в том, что внутри есть переменная b, как я могу сделать так, чтобы я мог поддерживать ее там?

Пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Ваш файл сценария, вероятно, имеет окончания строки CRLF в стиле DOS:

$ b=8.25
$ if [ $(echo "$b < 10" | bc) -ne 0 ]; then
> echo "hey"
> fi
hey

$ b=$'8.25\r'
$ if [ $(echo "$b < 10" | bc) -ne 0 ]; then
> echo "hey"
> fi
(standard_in) 1: illegal character: ^M
bash: [: -ne: unary operator expected

Запустите dos2unix в вашем файле скрипта.

0 голосов
/ 05 мая 2018

Сохранить сравнение в отдельной переменной

b=8.25

# Capture output outside the if
comparison=$(echo  "$b < 10" | bc)

# Use the output in the if
if [ $comparison -ne 0 ]; then

    echo "hey"
fi
...