
1時間の間、あれこれ調べてみましたが、何が問題なのかわかりませんね。何らかの理由でelseステートメントは機能しません。
#!/bin/bash
if [ $#=3 ]
then
echo $*
else
echo "error" 1>&2
exit
fi
答え1
問題は次の行にあります。
if [ $#=3 ]
周囲にスペースがないので、=
次のことを行う必要があります。
if [ -n $#=3 ]
testは常にtrue=3
なので、else
決して実行されません。
次の周りにスペースを使用する必要があります=
。
if [ $# = 3 ]
単語の区切りとパス名の拡張を避けるために、変数の拡張に二重引用符を使用することもできますが、この場合は必ずしも必要ではありません$#
。