检查命令行参数是否存在
Checking If A Command Line Argument Exists
我创建了一个 shell 脚本,其中包含 1 个必需参数。我想要它,以便脚本只会 运行 如果存在该 1 个参数,否则它将退出。
这是我的代码:
#!/bin/bash
branch=stable
# Custom options/arguments
usage() { # usage code }
while getopts ":bs:" opt; do
case $opt in
b)
branch=development
;;
s)
site=${OPTARG}
;;
*)
usage
;;
esac
done
shift $((OPTIND-1))
if [ -z "${s}" ]; then
echo "
$(tput setaf 1)ERROR:
=========================$(tput sgr0)
$(tput setaf 6)No website name provided:
Format: <example.com>$(tput sgr0)
"
exit 1;
fi
# Rest of the code to run when there are no errors - not putting here as it's irrelevant
所以我希望,当我 运行 sudo ./nginx-install.sh
时,它会看到没有参数并显示错误消息 - 确实如此。但是当我做 sudo ./nginx-install.sh -s example.com
时,我只是再次收到错误消息,而实际上我希望代码的其余部分为 运行.
谁能指出我的代码哪里出错了?我是 bash 脚本编写的新手,所以主要在 Google 搜索帮助时回复。
谢谢。
您为 $site
分配了一个值,而不是 $s
。变量 $s
一直为空。
我创建了一个 shell 脚本,其中包含 1 个必需参数。我想要它,以便脚本只会 运行 如果存在该 1 个参数,否则它将退出。
这是我的代码:
#!/bin/bash
branch=stable
# Custom options/arguments
usage() { # usage code }
while getopts ":bs:" opt; do
case $opt in
b)
branch=development
;;
s)
site=${OPTARG}
;;
*)
usage
;;
esac
done
shift $((OPTIND-1))
if [ -z "${s}" ]; then
echo "
$(tput setaf 1)ERROR:
=========================$(tput sgr0)
$(tput setaf 6)No website name provided:
Format: <example.com>$(tput sgr0)
"
exit 1;
fi
# Rest of the code to run when there are no errors - not putting here as it's irrelevant
所以我希望,当我 运行 sudo ./nginx-install.sh
时,它会看到没有参数并显示错误消息 - 确实如此。但是当我做 sudo ./nginx-install.sh -s example.com
时,我只是再次收到错误消息,而实际上我希望代码的其余部分为 运行.
谁能指出我的代码哪里出错了?我是 bash 脚本编写的新手,所以主要在 Google 搜索帮助时回复。
谢谢。
您为 $site
分配了一个值,而不是 $s
。变量 $s
一直为空。