getoptsは長くて短いオプションを解析するために使用されます。

getoptsは長くて短いオプションを解析するために使用されます。

短いオプションのみを許可するスクリプトがすでに存在し、同じスクリプトを拡張して対応する長いオプションを渡したいと思います。既存のコードは次のとおりです。

while getopts :t:c: name; do   
   case name
    t) first=$OPTARG;;
    c) second=$OPTARG;;
    *) echo 'Invalid option'; break;;   
   esac 
done 
SHIFT $((OPTIND-1))

これは短いオプションに適用されますが、長いオプションの解析を可能にするために同じコードを拡張するにはどうすればよいですか?

ベストアンサー1

利用可能なオプションが一貫していないので、私は直接リリースする傾向があります。

SWITCH=false
VAL=default
while [ "$#" -gt 0 ] ; do
  case "${1}" in
    (-s|--switch) SWITCH=true ;;
    (-v|--value)  VAL="${2}" ; shift ;;
    (-v?*)        VAL="${1#-v}" ;;
    (--value=?*)  VAL="${1#--value=}" ;;
  esac
  shift
done

おすすめ記事