我想為別名添加一個標志,在我的例子中,我想為bat做這件事。例如,
mybat -a = 'bat --paging=always [file e.g .zshrc]'/span>
mybat -n = 'bat --paging=never [file e.g .zshrc] '
我還寫了并測驗了以下代碼,但沒有成功:
我寫了并測驗了以下代碼,但沒有成功。
mybat(){
local OPTIND值
while getopts ":an" option; do
case $option in
a) value=never;;
n) value=always;;
?) echo "無效的選項。$OPTARG"; return 1 ; 。
esac
完成了。
蝙蝠 --分頁=$value
}
誰有辦法?
uj5u.com熱心網友回復:
我沒有bat,所以我用cat代替,并添加了一些cat專用標志:
$ man cat
-A, --show-all 相當于 -vET -b, --number-nonblank 非空的輸出行數,覆寫 -n -E, --顯示結束 在每一行的末尾顯示$。 -n, --number 對所有輸出行進行編號
一種函式方法,我們只需將第一個短選項替換為其對應的長選項:
mycat() {
unset value
inputs="$@"/span>
option="${inputs%% *}" # 假設只想決議第一個輸入引數
case $option in
-A) value='--show-all'; shift ;;
-B) value='--number-nonblank'; shift ;;
-E) value='--show-ends'; shift ;;
-n) value='--number'; shift; 。
esac; esac
set -xv
cat ${value} "$@" # 不要用雙引號包裹${value},否則沒有標志的mycat()呼叫會被呼叫成 "cat '' < filename> "并產生一個錯誤。
set xv
}
注意:一旦確信該功能按計劃作業,則洗掉set -xv/ xv
測驗檔案:
$ cat words.dat
我是一個男人 post-tab # <tab> 在 "男人 "和 "post-tab "之間
我不是一個男人 我
是一個人
試行該功能:
$ mycat -n words.dat
cat --number words.dat
1 我是一個男人 后標簽
2 我不是一個人 我
3 我是一個人
$ mycat -A words.dat
cat --show-all words.dat
我是一個男人^Ipost-tab$ # ^I == <tab>
我不是一個男人 I$
是個男人$
$ mycat -b words.dat
cat --number-nonblank words.dat
1 我是一個男人 后標簽
2 我不是一個人 我
3 我是一個男人
$ mycat -E words.dat
cat --show-ends words.dat
我是一個男人后標簽$
我不是一個男人 I$
am a man$
$ mycat -A -n words.dat # 2x選項;只替換第一個選項。
cat --show-all -n words.dat
1 我是一個男人^Ipost-tab$
2 我不是一個男人 I$
3 我是一個男人$
$ mycat words.dat # no options[/span]。
cat words.dat
我是一個男人后標簽
我不是一個人 我
是一個男人
uj5u.com熱心網友回復:
堅持使用別名的方法,定義2個不同的別名,例如:
mybata='bat --paging=always'。
mybatn='bat --paging=never'。
注意:選擇簡短的別名,例如,mybata vs mybat_a vs mybat-a vs mba ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/324973.html
標籤:
