昨天在定位一個bug的時候,需要用shell腳本對字符串進行比較,出了一個小問題,就搜索總結了一下。 第一種方法: eq 對比字符串是否相等,我首先想到的就是 eq,然而打印的結果不正確。看筆記: eq 檢測兩個整數是否相等,相等返回 true。 a eq b 返回false。 原來是我記錯了, eq只支持整數的比較,而我比較的是字符串,當然不行了。 假如是小數比較的話,會報錯: 代碼與運行結果: ...
2018-03-02 09:09 0 22770 推薦指數:
#!/bin/sh #測試各種字符串比較操作。 #shell中對變量的值添加單引號,爽引號和不添加的區別:對類型來說是無關的,即不是添加了引號就變成了字符串類型, #單引號不對相關量進行替換,如不對$符號解釋成變量引用,從而用對應變量的值替代,雙引號則會進行替代 #author ...
原腳本代碼 手動執行腳本結果和預想的一致 結果 但是加入crontab定時任務后,執行的結果卻是錯誤的。 原因 這是因為if里的比較字符串用了==,這個比較符合在bash里是可以用的,但是在大部分的shell中都不能用,比如/bin/sh, 如果將此腳本的頭部聲明成 ...
涉及到比較和判斷的時候,要注意 整數比較使用-lt,-gt,ge等比較運算符,詳情參考:整數比較 文件測試使用 -d, -f, -x等運算發,詳情參考:文件測試 邏輯判斷使用 &&(且)、||(或)、!(取反) 字符串比較實用 字符串的比較使用以下三個 ...
一、問題 最近在寫 shell 腳本的時候,遇到了一些小問題,就是我在判斷一個字符串是否為空的時候經常報下面的錯,程序是正常執行了,但是有這個提示很蛋疼,下面就是看看是什么問題導致的? 二、問題解析 原始腳本 我的腳本是這樣寫的 運行后 第一個問題: -eq 是用於比較兩個 ...
比較兩個字符串是否相等的辦法是: if [ "$test"x = "test"x ]; then這里的關鍵有幾點:1 使用單個等號2 注意到等號兩邊各有一個空格:這是unix shell的要求3 注意到"$test"x最后的x,這是特意安排的,因為當$test為空的時候,上面的表達式就變成了x ...
轉自:http://qubaoquan.blog.51cto.com/1246748/292461 比較兩個字符串是否相等的辦法是: if [ "$test"x = "test"x ]; then 這里的關鍵有幾點: 1 使用單個等號 2 注意到等號兩邊各有一個空格 ...