シェルスクリプトのオプション処理
シェルスクリプトのオプション処理
シェルスクリプトにオプションを追加したいことがある。getoptやgetoptsもあるのだが、独自形式にしたければ自分で定義して書けばよい。
getopts使用例
getoptsを使う場合はこのような書き方になる。
- test-getopts.sh
#!/bin/sh while getopts ab opt do case $opt in a) echo "Option -a" ;; b) file="$2" echo "Option -b file=${file}" shift ;; *|-) break ;; esac done echo "file=${file}" echo "args: $*"
オプション指定時にはこのようになる。
$ ./test-getopts.sh -a -b xxx yyy zzz Option -a Option -b file=-b Option -b file=xxx file=xxx args: xxx yyy zzz
オプション[-b]が2回呼び出されているものの、最終的には必要な変数設定ができている。
ただし、xxxがbreak条件にあたるので、xxxが残った状態になる。
getopts無し
1文字オプション以外にしたければ次のように書くこともできる。
- test-optarg.sh
#!/bin/sh while [ -n "$1" ] do case "$1" in -abc) echo "Option -abc" ;; -xyz) file="$2" echo "Option -xyz file=${file}" shift ;; *|--) break ;; esac shift done echo "file=${file}" echo "args: $*"
オプション指定時にはこのようになる。
$ ./test-optarg.sh -abc -xyz aaa bbb Option -abc Option -xyz file=aaa file=aaa args: bbb
シェルスクリプトのオプション処理.txt · 最終更新: 2023/07/01 08:25 by Minoru Kijima