[英]Combining multiple options into one single option (Getopts)
由於我缺乏對使用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的結果。 是否可以通過簡單地使c調用選項a和b來解決此問題?
您可以引入減少重復的功能,如下所示:
#!/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
如果您使用的是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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.