Bash

Bash 在存在標誌時獲得輸入?

  • March 27, 2017

我正在編寫一個 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.

引用自:https://unix.stackexchange.com/questions/354102