Прошло некоторое время с тех пор, как я написал сценарий в bash, поэтому сделал небольшой скрипт для проверки. Это мой сценарий (текст в кавычках некоторые голландцы, реально не имеет значения):
#isingelogd
if[$#=0]
then
echo "Geef user-id's op!" 1>$2 ; exit 1
fi
for uid in $*
do
if who|grep $uid >dev/null
then
echo $uid is ingelogd
else
echo $uid is niet ingelogd
fi
done
Если я пытаюсь запустить его он говорит мне следующее:
bash-3.2$ ./isingelogd
./isingelogd
./isingelogd: line 3: if[0=0]: command not found
./isingelogd: line 4: syntax error near unexpected token `then'
./isingelogd: line 4: `then'
Если я проверить свою версию с Баш -v Я запускаю 3.2, который, как я думал, поддерживает квадратные скобки.
У кого-то была аналогичная проблема и найдено решение?
Я думаю, что это должно быть 'if [$ # -eq 0]'. '=' - сравнение строк, как описано [здесь] (http://tldp.org/LDP/abs/html/comparison-ops.html) –
Квадратные скобки - это не просто синтаксис, '[' на самом деле команда оболочки , Как и любая команда, ей нужны пробелы, чтобы отделить ее от своих аргументов (аналогично, 'if' нуждается в пробеле после нее). '[' Работает по-разному в зависимости от того, сколько аргументов оно получает (его последний аргумент должен быть ')') –