Linux Shell學習筆記。從這篇文章開始,習慣寫這個東西--

Linux 的字符串截取很有用。有八種方法。

假設有變量 var=http://www.aaa.com/123.htm

1. # 號截取,刪除左邊字符,保留右邊字符。

echo ${var#*//}

其中 var 是變量名,# 號是運算符,*// 表示從左邊開始刪除第一個 // 號及左邊的所有字符

即刪除 http://

結果是 :www.aaa.com/123.htm

2. ## 號截取,刪除左邊字符,保留右邊字符。

echo ${var##*/}

##*/ 表示從左邊開始刪除最後(最右邊)一個 / 號及左邊的所有字符

即刪除 http://www.aaa.com/

結果是 123.htm

3. %號截取,刪除右邊字符,保留左邊字符

echo ${var%/*}

%/* 表示從右邊開始,刪除第一個 / 號及右邊的字符

結果是:http://www.aaa.com

4. %% 號截取,刪除右邊字符,保留左邊字符

echo ${var%%/*}

%%/* 表示從右邊開始,刪除最後(最左邊)一個 / 號及右邊的字符

結果是:http:

5. 從左邊第幾個字符開始,及字符的個數

echo ${var:0:5}

其中的 0 表示左邊第一個字符開始,5 表示字符的總個數。

結果是:http:

6. 從左邊第幾個字符開始,一直到結束。

echo ${var:7}

其中的 7 表示左邊第8個字符開始,一直到結束。

結果是 :www.aaa.com/123.htm

7. 從右邊第幾個字符開始,及字符的個數

echo ${var:0-7:3}

其中的 0-7 表示右邊算起第七個字符開始,3 表示字符的個數。

結果是:123

8. 從右邊第幾個字符開始,一直到結束。

echo ${var:0-7}

表示從右邊第七個字符開始,一直到結束。

結果是:123.htm

注:(左邊的第一個字符是用 0 表示,右邊的第一個字符用 0-1 表示



運算符部分簡單記錄:

下表列出了常用的算術運算符,假定變量 a 爲 10,變量 b 爲 20:

運算符說明舉例
+加法`expr $a + $b` 結果爲 30。
-減法`expr $a - $b` 結果爲 -10。
*乘法`expr $a \* $b` 結果爲  200。
/除法`expr $b / $a` 結果爲 2。
%取餘`expr $b % $a` 結果爲 0。
=賦值a=$b 將把變量 b 的值賦給 a。
==相等。用於比較兩個數字,相同則返回 true。[ $a == $b ] 返回 false。
!=不相等。用於比較兩個數字,不相同則返回 true。[ $a != $b ] 返回 true。
-eq檢測兩個數是否相等,相等返回 true。[ $a -eq $b ] 返回 false。
-ne檢測兩個數是否相等,不相等返回 true。[ $a -ne $b ] 返回 true。
-gt檢測左邊的數是否大於右邊的,如果是,則返回 true。[ $a -gt $b ] 返回 false。
-lt檢測左邊的數是否小於右邊的,如果是,則返回 true。[ $a -lt $b ] 返回 true。
-ge檢測左邊的數是否大於等於右邊的,如果是,則返回 true。[ $a -ge $b ] 返回 false。
-le檢測左邊的數是否小於等於右邊的,如果是,則返回 true。[ $a -le $b ] 返回 true。

運算符說明舉例
!非運算,表達式爲 true 則返回 false,否則返回 true。[ ! false ] 返回 true。
-o或運算,有一個表達式爲 true 則返回 true。[ $a -lt 20 -o $b -gt 100 ] 返回 true。
-a與運算,兩個表達式都爲 true 才返回 true。[ $a -lt 20 -a $b -gt 100 ] 返回 false。

&&邏輯的 AND[[ $a -lt 100 && $b -gt 100 ]] 返回 false
||邏輯的 OR[[ $a -lt 100 || $b -gt 100 ]] 返回 true

=檢測兩個字符串是否相等,相等返回 true。[ $a = $b ] 返回 false。
!=檢測兩個字符串是否相等,不相等返回 true。[ $a != $b ] 返回 true。
-z檢測字符串長度是否爲0,爲0返回 true。[ -z $a ] 返回 false。
-n檢測字符串長度是否爲0,不爲0返回 true。[ -n $a ] 返回 true。
str檢測字符串是否爲空,不爲空返回 true。[ $a ] 返回 true。


-b file檢測文件是否是塊設備文件,如果是,則返回 true。[ -b $file ] 返回 false。
-c file檢測文件是否是字符設備文件,如果是,則返回 true。[ -c $file ] 返回 false。
-d file檢測文件是否是目錄,如果是,則返回 true。[ -d $file ] 返回 false。
-f file檢測文件是否是普通文件(既不是目錄,也不是設備文件),如果是,則返回 true。[ -f $file ] 返回 true。
-g file檢測文件是否設置了 SGID 位,如果是,則返回 true。[ -g $file ] 返回 false。
-k file檢測文件是否設置了粘着位(Sticky Bit),如果是,則返回 true。[ -k $file ] 返回 false。
-p file檢測文件是否是有名管道,如果是,則返回 true。[ -p $file ] 返回 false。
-u file檢測文件是否設置了 SUID 位,如果是,則返回 true。[ -u $file ] 返回 false。
-r file檢測文件是否可讀,如果是,則返回 true。[ -r $file ] 返回 true。
-w file檢測文件是否可寫,如果是,則返回 true。[ -w $file ] 返回 true。
-x file檢測文件是否可執行,如果是,則返回 true。[ -x $file ] 返回 true。
-s file檢測文件是否爲空(文件大小是否大於0),不爲空返回 true。[ -s $file ] 返回 true。
-e file檢測文件(包括目錄)是否存在,如果是,則返回 true。[ -e $file ] 返回 true。

echo -e -- 表示轉義符可以應用

echo "XXX" > filename -- 輸入結果到制定文件中

echo `XXX` 這個符號有很多XXX函數可以執行,例如:echo `date` --會輸出當前時間




printf的轉義序列

序列說明
\a警告字符,通常爲ASCII的BEL字符
\b後退
\c抑制(不顯示)輸出結果中任何結尾的換行字符(只在%b格式指示符控制下的參數字符串中有效),而且,任何留在參數裏的字符、任何接下來的參數以及任何留在格式字符串中的字符,都被忽略
\f換頁(formfeed)
\n換行
\r回車(Carriage return)
\t水平製表符
\v垂直製表符
\\一個字面上的反斜槓字符
\ddd表示1到3位數八進制值的字符。僅在格式字符串中有效
\0ddd表示1到3位的八進制值字符


test 擴展符號:

文件測試

參數說明
-e 文件名如果文件存在則爲真
-r 文件名如果文件存在且可讀則爲真
-w 文件名如果文件存在且可寫則爲真
-x 文件名如果文件存在且可執行則爲真
-s 文件名如果文件存在且至少有一個字符則爲真
-d 文件名如果文件存在且爲目錄則爲真
-f 文件名如果文件存在且爲普通文件則爲真
-c 文件名如果文件存在且爲字符型特殊文件則爲真
-b 文件名如果文件存在且爲塊特殊文件則爲真

until 循環

until循環執行一系列命令直至條件爲真時停止。

until循環與while循環在處理方式上剛好相反。

一般while循環優於until循環,但在某些時候—也只是極少數情況下,until循環更加有用。

until 語法格式:

until condition
do
    command
done

條件可爲任意測試條件,測試發生在循環末尾,因此循環至少執行一次—請注意這一點。



$#傳遞到腳本的參數個數
$*以一個單字符串顯示所有向腳本傳遞的參數
$$腳本運行的當前進程ID號
$!後臺運行的最後一個進程的ID號
$@與$*相同,但是使用時加引號,並在引號中返回每個參數。
$-顯示Shell使用的當前選項,與set命令功能相同。
$?顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。


command > file將輸出重定向到 file。
command < file將輸入重定向到 file。
command >> file將輸出以追加的方式重定向到 file。
n > file將文件描述符爲 n 的文件重定向到 file。
n >> file將文件描述符爲 n 的文件以追加的方式重定向到 file。
n >& m將輸出文件 m 和 n 合併。
n <& m將輸入文件 m 和 n 合併。
<< tag將開始標記 tag 和結束標記 tag 之間的內容作爲輸入。

如果希望執行某個命令,但又不希望在屏幕上顯示輸出結果,那麼可以將輸出重定向到 /dev/null:

$ command > /dev/null

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章