shell中关于数字变量比较报错的问题

shell 中使用ssh -t hostIP cat filename | grep keywork | awk '{print $2}'方式获取远程文件中配置的值,并拿来进行大小比较或数学运算时,会报错如下:


通过 test/[] 判断两个数字变量的大小:
if [ ${seqno} -eq ${seqno2} ];

报错:
: integer expression expected



通过 bc 判断两个数字变量的大小:
result=$(echo "${seqno}==${seqno2}" | bc)

报错:
(standard_in) 1: illegal character: ^M


原因:
通过ssh -t 执行返回的结果其换行符为"\r\n"
shell 中test/[]/bc均无法进行处理,故而报错。


解决办法,删除字符串中的\r即可
ssh -t hostIP cat filename | grep keywork | awk '{print $2}' | tr -d $'\r'

or

ssh -t hostIP cat filename | grep keywork | awk '{print $2}' | sed 's/\r//g'
【shell中关于数字变量比较报错的问题】

    推荐阅读