由于我对使用getopts缺乏透彻的理解,标题肯定是模糊的:0。我目前正在编写一个bash脚本,我想添加一个选项,在getopts的case语句中输出其他选项。为了缩放,我缩短了程序。
#!/bin/bash
while getopts :abc opt
do
case $opt in
a)
echo "Hello"
;;
b)
echo "Goodbye"
c)
:ab #****I WANT -c TO OUTPUT THE RESULTS OF a and b************
;;
esac
done
正如您在选项c中看到的,我希望这个特殊选项(-c)同时输出-a和-b的结果。有没有办法通过简单地对选项a和b进行c调用来解决这个问题?
答案 0 :(得分:0)
你可以引入减少重复的功能,如下所示:
#!/bin/bash
do_a() {
echo "Hello"
}
do_b() {
echo "Goodbye"
}
while getopts :abc opt
do
case $opt in
a)
do_a
;;
b)
do_b
;;
c)
do_a
do_b
;;
esac
done
答案 1 :(得分:0)
如果您使用的是最新版本的Bash,而不是使用case
终止;;
条款,则可以使用具有多种模式的特定于bash的;;&
:
#!/bin/bash
while getopts :abc opt
do
case $opt in
a|c)
echo "Hello"
;;&
b|c)
echo "Goodbye"
;;&
esac
done
和
$ bash script.bash -a
Hello
$ bash script.bash -c
Hello
Goodbye