単純なif/elseが機能しない

単純なif/elseが機能しない

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 ]

単語の区切りとパス名の拡張を避けるために、変数の拡張に二重引用符を使用することもできますが、この場合は必ずしも必要ではありません$#

おすすめ記事