簡體   English   中英

getopts無法正常工作-bash

[英]getopts not working - bash

我正在編寫一個接受參數的bash腳本。 我正在使用getopts來實現它。

#!/bin/bash

while getopts ":a" opt; do
  case $opt in
    a)
      echo "-a was triggered!" >&2
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      ;;
  esac
done

但是上面的代碼返回是我這個錯誤。

'etOpts_test.sh: line 4: syntax error near unexpected token `in
'etOpts_test.sh: line 4: `  case $opt in

我正在使用CentOs 5.5

在第4行,您可能希望在case "$opt" in (quote $opt )。 否則,如果它包含一個元字符,則可能會失敗。

它應該是 ,而不是:a來表示需要參數的標志,也不應加問號,因為它用作通配符。 總體代碼將是(還顯示一個標志-h不帶參數):

function usage {
  echo "usage: ..."
}

a_arg=
while getopts a:h opt; do
  case $opt in
    a)
      a_arg=$OPTARG
      ;;
    h)
      usage && exit 0
      ;;
    ?)
      usage && exit 2
      ;;
  esac
done

暫無
暫無

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

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