Bash
Bash 在存在標誌時獲得輸入?
我正在編寫一個 bash 腳本,它有可選的標誌,但也有一個輸入。
我無法獲得輸入,
$1
因為當存在標誌時,輸入會移動。因此,例如,如果我執行,
script.sh test
那麼$1
將等於測試。但是如果我執行,
script.sh -b test
那麼$1
將等於-b。while getopts 'bh' flag; do case "${flag}" in b) boxes= 'true' ;; h) echo "options:" echo "-h, --help show brief help" echo '-b add black boxes for monjaro' ;; *) error "Unexpected option ${flag}" ;; esac done echo $1;
我沒有設置標誌的數量,我知道我將來會添加更多。
我怎樣才能始終如一地獲得第一個非標誌值?
您通常
getopts
用作:while getopts...; do # process options ... done shift "$((OPTIND - 1))" printf 'First non-option argument: "%s"\n' "$1"
以上
shift
丟棄了--
由getopts
.