脚本中每个循环的整数表达式预期错误

时间:2015-05-14 10:03:57

标签: bash unix

以下内容:

dest=$1
while read -r line
do
    num=$(grep -o "[0-9]" <<< "$line")
    if [ "$num" -gt 1 ]; then
        echo "$line" 
    fi
done < "$dest"

这意味着打印出一个前导数字大于1的行,而是打印一个随机整数,大多数情况下都会说明预期的整数表达式。

正在读入和循环的文件包含所有以数字开头的行,后跟空格和句子:

3 overflow-x
4 font-size
....etc

在if语句中我有什么问题吗?有没有办法将数字转换为实际的数字类型,而不是进行字符串比较?

2 个答案:

答案 0 :(得分:1)

实际上你应该认真考虑使用这个简短的&amp;简单的awk命令而不是while循环,grep和条件脚本:

awk '$1>1' file
3 overflow-x
4 font-size

答案 1 :(得分:0)

您需要使用锚点来匹配开头的数字。

num=$(grep -o '^[0-9]\+' <<< "$line")