以下内容:
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语句中我有什么问题吗?有没有办法将数字转换为实际的数字类型,而不是进行字符串比较?
答案 0 :(得分:1)
实际上你应该认真考虑使用这个简短的&amp;简单的awk
命令而不是while循环,grep
和条件脚本:
awk '$1>1' file
3 overflow-x
4 font-size
答案 1 :(得分:0)
您需要使用锚点来匹配开头的数字。
num=$(grep -o '^[0-9]\+' <<< "$line")