簡體   English   中英

bash腳本未將標志分配給變量

[英]bash script does not assign flags to variable

我有一個bash文件,我在其中傳遞諸如

bash foo.sh update -f /var/ -v true

所以根據這個答案我的腳本應該看起來像

if [[ "$1" == "update" ]]; then
    updater 
fi

function updater(){
    verbose='false'
    fflag=''
    error=''

while getopts 'f:v' flag; do
  case "${flag}" in 
    f) fflag="${OPTARG}";;
    v) verbose='false';;
    *) error="bflag";;
  esac
done

  echo $fflag
}

我將第一個腳本用作入口點,因為我還有其他函數可以執行其他操作,但是由於某些原因,上面的腳本甚至沒有顯示$fflag的值,因此我嘗試將getopts循環移出該函數以徒勞無功

有3個問題:

  1. 首先在開始時定義一個函數,然后在腳本中調用它
  2. 您需要使用"$@"將命令行傳遞給函數
  3. 在傳遞命令行參數之前,請調用shift刪除第一個參數

您可以使用以下腳本:

updater() {
    verbose='false'
    fflag=''
    error=''

    while getopts 'f:v' flag; do
      case "$flag" in
        f) fflag="${OPTARG}";;
        v) verbose='false';;
        *) error="bflag";;
      esac
    done

    declare -p fflag
}

if [[ $1 == "update" ]]; then
    shift
    updater "$@"
fi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM