Подтвердить что ты не робот

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
4b9b3361

Ответ 1

Котировки!

if [ "$1" != -v ]; then

В противном случае, когда $1 полностью пуст, ваш тест будет выглядеть следующим образом:

[ != -v ]

вместо

[ "" != -v ]

... и != не является унарным оператором (т.е. способным принимать только один аргумент).