我正在尝试评估来自rung卷曲检查的回报。
我的剧本:
#!/bin/bash
length=$(curl -s -I www.google.com | grep Length | awk {'print $2'})
if [[ $length -le 300 ]]
then
echo "length is too small"
fi
输出为258:
mira:~ david$ curl -s -I www.google.com | grep Length | awk {'print $2'}
258
所以我想运行echo命令,因为它小于300。
我收到错误:
非常感谢你的帮助。mira:~david $ ./test.sh")语法错误:算术运算符无效 (错误令牌是" mira:~david $
答案 0 :(得分:0)
问题是来自curl的返回行李\r
:
bash -x test.sh
++ grep Length
++ curl -s -I www.google.com
++ awk '{print $2}'
+ length=$'258\r'
+ '[' $'258\r' -le 300 ']'
: integer expression expected
你可以通过在awk上使用printf而不是print来解决这个问题:
#!/bin/bash
length=$(curl -s -I www.google.com | grep Length | awk '{printf "%d",$2}')
if [[ "$length" -le 300 ]]
then
echo "length is too small"
fi
结果:
tiago@dell:~$ bash test.sh
length is too small
tiago@dell:~$ bash -x test.sh
++ grep Length
++ curl -s -I www.google.com
++ awk '{printf "%d",$2}'
+ length=258
+ [[ 258 -le 300 ]]
+ echo 'length is too small'
length is too small
PS。 bash -x
对于调试shell脚本非常有帮助。