Unix программирование, если заявление - PullRequest
0 голосов
/ 04 марта 2012

Что не так, я получаю сообщение об ошибке: ./greater[4]: [: argument expected

#!/bin/ksh
echo "please enter a nuber " 
read $num
if [$num -ls 20 ]; then
 echo "your nuber is greater than 20 "
else
echo "your number is less then 20 "

 fi

Ответы [ 2 ]

0 голосов
/ 04 марта 2012
read $num

Это выше будет считывать ввод в переменную, имя которой хранится в $num, что "очевидно" не правильно.Измените его на read num, и он будет работать, как и ожидалось.


При вышеупомянутом изменении вам также потребуется добавить пробел после [ в строке, указанной ниже:

if [$num -ls 20 ]; then

В противном случае команда будет выглядеть как приведенный ниже фрагмент кода, если пользователь введет 123 , и ваша оболочка будет жаловаться на команду [123, не найденную или похожую.

if [123 -ls 20 ]; then
0 голосов
/ 04 марта 2012

Вам нужен пробел после [:

if [ $num -lt 20 ]; then

Команда [ на самом деле та же самая, что и команда test, и как команда ей нужен пробел между именем командыи его первый аргумент.

...