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中关于数字变量比较报错的问题】
推荐阅读
- Linux|Shell 编程~人入门到入坑。
- Linux技术|Windows平台下ADB的安装与使用
- c#|C#中使用SHFileOperation调用Windows的复制文件对话框
- Shell|Linux下 svn命令操作
- ubuntu环境|ubuntu10.04 常用命令
- ubuntu环境|Linux SSH相关命令
- python|合并和排序 Linux 上的文件 | Linux 中国
- 脚本输入处理——选项处理
- Shell|Shell脚本学习总结
- Shell|Linux: grep命令多关键字的“与”和“或”