shell中關於數字變數比較報錯的問題

2021-08-03 01:59:18 字數 697 閱讀 7207

shell 中使用

ssh -t hostip cat filename | grep keyword | awk ''
方式獲取遠端檔案中配置的值,並拿來進行大小比較或數**算時,會報錯如下:

通過 test/ 判斷兩個數字變數的大小:

if [ $ -eq $ ];
報錯:

: integer expression expected
通過 bc 判斷兩個數字變數的大小:

result=$(echo "$==$" | bc)
報錯:

(standard_in) 1: illegal character: ^m
原因:

通過 ssh -t 執行返回的結果其換行符為 "\r\n"

shell 中 test//bc 均無法進行處理,故而報錯。

解決辦法,刪除字串中的\r即可

ssh -t hostip cat filename | grep keywork | awk '' | tr -d $'\r'

orssh -t hostip cat filename | grep keywork | awk '' | sed 's/\r//g'

shell變數 比較

記錄下來,不常用就會忘 注意 這裡的空格很重要。要確保方括號的空格,前後都要有。if then elif then else fi f somefile 判斷是否是乙個檔案 x bin ls 判斷 bin ls是否存在並有可執行許可權 n var 判斷 var變數是否有值 a b 判斷 a和 b是否...

shell中數字大小的比較

整數之間的比較 示例指令碼 bin bash if 1 gt 2 then echo 引數 1大於引數 2 else echo 引數 1小於引數 2 fi數字判斷一些命令 gt是大於 lt是小於 eq是等於 ne是不等於 ge是大於等於 le是小於等於 小數及整數之前的比較 示例指令碼 a 1.6 ...

shell中數字大小的比較

整數之間的比較 示例指令碼 bin bash if 1 gt 2 then echo 引數 1大於引數 2 else echo 引數 1小於引數 2 fi數字判斷一些命令 gt是大於 lt是小於 eq是等於 ne是不等於 ge是大於等於 le是小於等於 小數及整數之前的比較 示例指令碼 a 1.6 ...