わかりました。
$ ./5_divisible_by_1_to_10.sh
./5_divisible_by_1_to_10.sh: line 16: [: -eq: unary operator expected
false
true
のための:
divisible_by () {
under_test=$1
from=2
to=4
divisible=0
for ((check=from; check<=to; check++)) {
if [ $(($under_test % $check)) -ne 0 ]; then
divisible=1
fi
}
return $divisible
}
divider=10
x= divisible_by "$divider"
if [ $x -eq 0 ]; then # <--- Line 16
echo "$x true"
else
echo "$x false"
fi
divider=12
if divisible_by $divider; then
echo "true"
else
echo "false"
fi
12を使用した2番目の呼び出しはうまく機能しますが、10(結果を表示しようとしている場合)を使用した最初の呼び出しではエラーが発生します。
$x
周囲に引用符を追加すると、"$x"
他のエラーが発生します。
$ ./5_divisible_by_1_to_10.sh
./5_divisible_by_1_to_10.sh: line 16: [: : integer expression expected
false
true
答え1
存在する
if [ $x -eq 0 ]
x
行が空なので
x= divisible_by "$divider"
無効です:空のdivisible_by
環境変数として呼び出されましたが、シェル環境で設定しようとx
しませんでした。x
以下を行う必要があります。
divisible_by "$divider"
x=$?
そして常に変数を引用しなければなりません。