78

異なる引数を取る bash スクリプトを書きたいと思います。通常の Linux コンソール プログラムと同様に使用する必要があります。

my_bash_script -p 2 -l 5 -t 20

したがって、値 2 は pages という変数に保存し、パラメーター l は length という変数に保存し、値 20 は変数 time に保存する必要があります。

これを行う最善の方法は何ですか?

4

2 に答える 2

128

ビルトインを使用するgetopts:
ここにチュートリアルがあります

pages=  length=  time=

while getopts p:l:t: opt; do
  case $opt in
  p)
      pages=$OPTARG
      ;;
  l)
      length=$OPTARG
      ;;
  t)
      time=$OPTARG
      ;;
  esac
done

shift $((OPTIND - 1))

shift $((OPTIND - 1))コマンドラインパラメータをシフトして、スクリプトに可能な引数にアクセスできるようにします。$1, $2, ...

于 2012-08-20T11:08:07.160 に答える
12

の線に沿った何か

pages=
length=
time=

while test $# -gt 0
do
    case $1 in
        -p)
            pages=$2
            shift
            ;;
        -l)
            length=$2
            shift
            ;;
        -t)
            time=$2
            shift
            ;;
        *)
            echo >&2 "Invalid argument: $1"
            ;;
    esac
    shift
done
于 2012-08-20T11:07:34.163 に答える