shell脚本中的参数错误太多

时间:2011-11-27 17:33:23

标签: shell

我正在尝试一个简单的shell脚本,如下所示:

#!/bin/bash
up_cap=$( cat result.txt | cut -d ":" -f 6,7 | sort -n | cut -d " " -f 2 | sort -n)
down_cap=$( cat result.txt | cut -d : -f 6,7 | sort -n | cut -d " " -f 6| sort -n)
for value in "${down_cap[@]}";do
        if [ $value > 80000 ]; then
                cat result.txt | grep -B 1 "$value"
        fi
done

echo " All done, exiting"

当我执行上面的脚本为./script.sh时,我收到错误: ./script.sh:5行:[:论据太多了  全部完成,退出

我已经用Google搜索了,但仍然无法纠正这一点。

2 个答案:

答案 0 :(得分:2)

你想要

if [ "$value" -gt 80000 ]; then

您使用-gt检查A是否大于B,而不是>。我只是添加了引号,以防止在$ value为空的情况下脚本失败。

答案 1 :(得分:0)

尝试明确声明变量$value

declare -i value

因此,随着dominikh和我的添加,代码应该如下所示:

#!/bin/bash
up_cap=$( cat result.txt | cut -d ":" -f 6,7 | sort -n | cut -d " " -f 2 | sort -n)
down_cap=$( cat result.txt | cut -d : -f 6,7 | sort -n | cut -d " " -f 6| sort -n)
for value in "${down_cap[@]}";do
  declare -i value
  if [ $value -gt 80000 ]; then
    cat result.txt | grep -B 1 "$value"
  fi
done

echo " All done, exiting"