スクリプトで使用される引数の 2 倍を取得しています。
この次のコードを初めて使用して、不要な引数がないことを確認します (arg1:arg2:arg3 のみを考慮します)。
PARAM=$@
while [ "$#" -gt "0" ]; do
case $1 in
arg1)
shift2
;;
arg2)
shift
;;
arg3)
shift
;;
*)
echo "Usage : ./test.sh arg1 <VAL1> <VAL2> [arg2] [arg3]"
exit 2
;;
esac
shift
done
そして、これらの引数をもう一度解析し、arg1 を取得したときに次の 2 つの引数を取得できるようにしたいので、次のようなものから始めました。
for command in $PARAM
do
case $command in
arg1)
shift
VALUE1=$command
shift
VALUE2=$command
exec_arg1
;;
esac
shift
しかし、「シフト」を使用しているときに、シフトエラーが発生します。多くシフトすることはできません
シバンは「#!/bin/sh」で、bash のシバン (つまり、「#!/bin/bash」) を使用せずに解決策を探しています。