我正在尝试一个简单的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搜索了,但仍然无法纠正这一点。
答案 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"