Bash 包含参数值和可选标志的脚本
Bash script with both parameter values and optional flags
我正在编写一个 bash 脚本,它依赖于通过参数提供的许多值并提供可选的(布尔)标志。
基于 this page 上的示例,我使用 -h
选项扩展了脚本,如下所示:
human=false
while getopts u:a:f:h: flag
do
case "${flag}" in
u) username=${OPTARG};;
a) age=${OPTARG};;
f) fullname=${OPTARG};;
h) human=true;;
esac
done
if $human; then
echo "Hello human"
else
echo "You're not human"
fi
echo "Username: $username";
echo "Age: $age";
echo "Full Name: $fullname";
问题是,-h
参数需要一个值,而它应该作为标志处理:
bash test.sh -u asdf -h
test.sh: option requires an argument -- h
You're not human
Username: asdf
Age:
Full Name:
如何在 bash 脚本中同时使用带有值和标志的参数?
您应该将 getopts u:a:f:h:
替换为 getopts u:a:f:h
。
删除 :
你告诉 getopts
h
没有额外的参数。
我正在编写一个 bash 脚本,它依赖于通过参数提供的许多值并提供可选的(布尔)标志。
基于 this page 上的示例,我使用 -h
选项扩展了脚本,如下所示:
human=false
while getopts u:a:f:h: flag
do
case "${flag}" in
u) username=${OPTARG};;
a) age=${OPTARG};;
f) fullname=${OPTARG};;
h) human=true;;
esac
done
if $human; then
echo "Hello human"
else
echo "You're not human"
fi
echo "Username: $username";
echo "Age: $age";
echo "Full Name: $fullname";
问题是,-h
参数需要一个值,而它应该作为标志处理:
bash test.sh -u asdf -h
test.sh: option requires an argument -- h
You're not human
Username: asdf
Age:
Full Name:
如何在 bash 脚本中同时使用带有值和标志的参数?
您应该将 getopts u:a:f:h:
替换为 getopts u:a:f:h
。
删除 :
你告诉 getopts
h
没有额外的参数。