Bash。 getopts命令。选项,将在程序结束时执行某些操作
问题描述:
问题:
如果我的程序选择'-v',它应该打印“再见!”在节目结束时。我可以做到这一点,但它会在开始时打印它。所以我需要一些命令来执行它,如果有的话。或者我该怎么做?Bash。 getopts命令。选项,将在程序结束时执行某些操作
getopts "v" opt
case ${opt} in
v) echo "Good bye!"
esac
答
你只设置一个变量,在分析选项,并在脚本的末尾,基于变量的值,你会如果执行所需的操作
say_bye=false
while getopts "v" opt; do
case "$opt" in
v) say_bye=true ;;
esac
done
# do stuff
# and at the end:
$say_bye && echo "Good bye!"
您脚本有多个潜在的终点,你想说再见所有的人,请使用EXIT陷阱
say_bye=false
while getopts "v" opt; do
case "$opt" in
v) say_bye=true ;;
esac
done
end_business() {
$say_bye && echo byebye
}
trap end_business EXIT
# do the rest of your script here ...
答
假设你-v
意为“冗长”,我喜欢set -x
在许多脚本中获取调试输出。如果你这样做,你可以用无操作语句这样,充当读者时不详细评论辣椒脚本,但输出到标准错误时冗长是 -
: setting x to "$x"
这很好地与吻合在EXIT上陷阱,正如@glenn已经提到的那样。因此,
while getopts "v" opt
do case "$opt" in
v) verbose=1 # in case you need other contingent code bits
set -v ;;
esac
done
然后
trap ' : "bye-bye!" ' EXIT
这将无害执行和输出咱这set -x
关闭。
什么是“smth”? – maffo
@poixen:可能是“something”的缩写。我会编辑。 –