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

Как проверить, что параметр был предоставлен в bash script

Я просто хочу проверить, был ли один параметр предоставлен в моем bash script или нет.

Я нашел этот, но все решения кажутся излишне сложными.

Какое простое решение этой простой проблемы имеет смысл для новичка?

4b9b3361

Ответ 1

Используйте $#, который равен количеству предоставленных аргументов, например:

if [ "$#" -ne 1 ]
then
  echo "Usage: ..."
  exit 1
fi

Осторожно: обратите внимание, что внутри функции это будет равно количеству аргументов, переданных функции, а не script.

EDIT: Как указано SiegeX в bash, вы также можете использовать арифметические выражения в (( ... )). Это можно использовать следующим образом:

if (( $# != 1 ))
then
  echo "Usage: ..."
  exit 1
fi

Ответ 2

Принятое решение проверяет, заданы ли параметры, заданные путем тестирования на счетчик заданных параметров. Если это не желаемая проверка, то есть, если вы хотите проверить, был ли установлен конкретный параметр, следующее:

for i in "[email protected]" ; do
    if [[ $i == "check parameter" ]] ; then
        echo "Is set!"
        break
    fi
done

Или, более компактно,

for i in "[email protected]" ; do [[ $i == "check argument" ]] && echo "Is set!" && break ; done

Ответ 3

if (( "$#" != 1 )) 
then
    echo "Usage Info:…"
exit 1
fi