我在将数字转换为字节的脚本中遇到问题。
- 如果该数字足够大,达到千兆字节或太字节,则脚本将按预期运行。
- 如果数字转换为千字节,它将运行脚本,显示以千字节为单位的数字,同时发送错误消息。
- 如果我处于兆字节间隔,它只会发送错误消息:
第 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
我发现了 shellcheck 检查器的问题,谢谢@Cyrus。显然我有一个不间断的空格 ( ),我必须将其删除并使其成为 (( 和 $number 之间的中间 elif 处的正常空格。这是怎么发生的?