数値をバイトに変換するスクリプトに問題があります。
- 数値がギガバイトまたはテラバイト単位で十分に大きい場合、スクリプトは期待どおりに実行されます。
- 数値がキロバイトに変換されると、スクリプトを実行し、数値をキロバイト単位で表示し、エラーメッセージを送信します。
- メガバイト間隔の場合、エラーメッセージが送信されます。
行 n ((: x > 1048576: 構文エラー: 無効な算術演算子 ("" で示されるエラー)。 x は、私が入力した数値を表します。)
tb=1099511627776
gb=1073741824
mb=1048576
kb=1024
read number
if (( $number > $tb )); then
echo "$(( number / tb )) terabytes"
elif (( $number > $gb )) && (( $number < $tb )); then
echo "$(( number > gb )) gigabytes"
elif (( $number > $mb )) && (( $number < $gb )); then
echo "$(( number > mb )) megabytes"
elif (( $number > $kb )) && (( $number < $mb )); then
echo "$(( number > mb )) kilobytes"
fi
行がn
途中にありますelif
。
答え1
この行にエラーがあります:echo "$(( number > gb ) gigabytes"
欠落)。
その行は次のようになります。echo "$(( number > gb )) gigabytes"
答え2
@Cyrusに感謝します。 shellcheckチェッカーで問題が見つかりました。明らかに((と$ numberの間の中間elifから削除し、通常の空白にする必要がある切り捨て防止スペース()があるようです)。どうすればこれが起こりますか?