Как проверить, что параметр был предоставлен в bash script
Я просто хочу проверить, был ли один параметр предоставлен в моем bash script или нет.
Я нашел этот, но все решения кажутся излишне сложными.
Какое простое решение этой простой проблемы имеет смысл для новичка?
Ответ 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