Bash
如何在 bash 腳本中包含自定義命令選項1和d_1一種nd1 and2?
我有一個腳本
myscript.sh
#!/bin/sh echo $1 $2
使用類似…
./myscript.sh foo bar
這給了我…的輸出
foo bar
但是我怎樣才能讓這個腳本包含自定義命令選項?例如 …
./myscript.sh -a foo and corespond to $1
和
./myscript.sh -b bar and corespond to $2
由於您將 bash 列為使用的 shell,請鍵入:
$ help getopts
這將列印如下內容:
getopts:getopts 選擇字元串名稱
$$ arg $$
解析選項參數。 外殼程序使用 Getopts 將位置參數解析為選項。
OPTSTRING 包含要辨識的選項字母;如果一個字母后跟一個冒號,則該選項應該有一個參數,它應該用空格與它分開。
每次呼叫getopts都會將下一個選項放入shell變數$name中,如果name不存在則初始化,下一個要處理的參數的索引放入shell變數OPTIND中。每次呼叫 shell 或 shell 腳本時,都會將 OPTIND 初始化為 1。當一個選項需要一個參數時,getopts 將該參數放入 shell 變數 OPTARG。
Getopts 通常會解析位置參數 ( $ 0 - $ 9),但如果給出更多參數,則改為解析它們。
有關的:
你應該使用man 1 bash:
小例子:
#!/bin/bash while getopts "a:b:" opt # get options for -a and -b ( ':' - option has an argument ) do case $opt in a) echo "Option a: $opt, argument: $OPTARG";; b) echo "Option b: $opt, argument: $OPTARG";; esac done