Bash script ошибка [:! =: ожидаемый операционный оператор
В моем script я пытаюсь проверить ошибку, если первый и единственный аргумент равен -v, но это необязательный аргумент. Я использую оператор if, но я продолжаю получать ожидаемую ошибку унарного оператора.
это код:
if [ $1 != -v ]; then
echo "usage: $0 [-v]"
exit
fi
Edit:
Я должен быть более конкретным:
Эта часть script выше проверяет необязательный аргумент, а затем, если аргумент не введен, он должен запустить остальную часть программы.
#!/bin/bash
if [ "$#" -gt "1" ]; then
echo "usage: $0 [-v]"
exit
fi
if [ "$1" != -v ]; then
echo "usage: $0 [-v]"
exit
fi
if [ "$1" = -v ]; then
echo "`ps -ef | grep -v '\['`"
else
echo "`ps -ef | grep '\[' | grep root`"
fi
Ответы
Ответ 1
Котировки!
if [ "$1" != -v ]; then
В противном случае, когда $1
полностью пуст, ваш тест будет выглядеть следующим образом:
[ != -v ]
вместо
[ "" != -v ]
... и !=
не является унарным оператором (т.е. способным принимать только один аргумент).