myscript.sh のオプションとして spaced を含む文字列値を渡す必要があります。コードは次のようになります。
while getopts "m:i:t:" OPTION
do
case $OPTION in
m)
M=$OPTARG
echo M: $M
;;
i)
I=$OPTARG
echo I: $I
;;
t)
T=$OPTARG
echo T: $T
;;
?)
usage
exit
;;
esac
done
コマンドラインで直接呼び出すと、問題なく動作します。
./myscript.sh -m 1 -i '0 1 2 3' -t '2142'
M: 1
I: 0 1 2 3
T: 2142
ただし、 -i を文字列変数として渡す必要があり、動作させることができません。オプション -i の文字列は切り詰められ、オプション -t も表示されません (おそらく改行)。
I='0 1 2 3'
./myscript.sh -m 1 -i "'"$I"'" -t '2142'
M: 1
I: '0
I='0 1 2 3'
II="'"$(echo $I)"'"
./myscript.sh -m 1 -i $II -t '2142'
M: 1
I: '0
助言がありますか?ありがとう!