具有多个算术条件的脚本失败

具有多个算术条件的脚本失败

我在将数字转换为字节的脚本中遇到问题。

  • 如果该数字足够大,达到千兆字节或太字节,则脚本将按预期运行。
  • 如果数字转换为千字节,它将运行脚本,显示以千字节为单位的数字,同时发送错误消息。
  • 如果我处于兆字节间隔,它只会发送错误消息:
第 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 处的正常空格。这是怎么发生的?

相关内容