我正在编写一个bash脚本,它依赖于通过参数提供的许多值,并提供可选(布尔)标志。
根据本页的示例,我使用-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
没有附加参数