一、基本結構化命令if-then語句格式:
if command then command fi
解釋:bash shell的if語句會運行if后面的那個命令。
如果該命令的退出狀態碼是0(該命令成功運行),位於then部分的命令就會被執行。
如果該命令的退出狀態碼是其他值,then部分的命令就不會被執行。
fi語句用來表示if-then語句到此結束。
二、test命令
Shell中的 test 命令用於檢查某個條件是否成立,它可以進行數值、字符和文件三個方面的測試。
if-then語句不能測試命令退出狀態碼之外的條件,test命令提供了在if-then語句中測試不同條件的途徑。
如果test命令中列出的條件成立,test命令就會退出並返回狀態碼0。
test命令的格式:
test condition
condition是test命令要測試的一系列參數和值。當用在if-then語句中時,test命令看起來是這樣的。
if test condition then command fi
另一種寫法:
if [condition] then command fi
第一個方括號和第二個方括號之前必須加上一個空格,否則會報錯
test命令可以判斷三類條件:
1)數值比較
2)字符串比較
3)判斷文件
test File1 –ef File2 兩個文件具有同樣的設備號和i結點號
test File1 –nt File2 文件1比文件2 新
test File1 –ot File2 文件1比文件2 舊
test –b File 文件存在並且是塊設備文件
test –c File 文件存在並且是字符設備文件
test –d File 文件存在並且是目錄
test –e File 文件存在
test –f File 文件存在並且是正規文件
...
@https://blog.csdn.net/weixin_36586564/article/details/78843172
三、tr 命令
tr = translate的簡寫。
tr 命令用於轉換或刪除文件中的字符。
tr 指令從標准輸入設備讀取數據,經過字符串轉譯后,將結果輸出到標准輸出設備。
tr 命令主要用來從標准輸入中通過替換或刪除操作進行字符轉換,然后打印輸出到標准輸出。
可以通過管道或重定向標准輸入來獲得 tr的輸入數據。
tr 對輸入數據可以進行三種操作: 字符替換、壓縮重復字符和刪除字符。
tr命令格式:
tr [OPTION] String1 [String2]
1.在tr中string1和string2用來指示一個字符集合范圍。可以是下面的一些形式(一般要加雙引號):
1) [a-d] : [a-d]表示abcd,常用的有[a-z]、[A-Z]、[0-9]等,[bfgh]表示 bfgh。可以加上單或雙引號
2) [C*n] : 表示字符 C 重復出現指定次數n。因此,[F*3]表示FFF。一般只能出現在 string2中。
3) \nnn : 三位八進制數,對應有效的 ASCII 字符。一般用於表示特定的控制字符。
2.選項"-c": 表示用在輸入數據中出現,但是不包含在 string1 字符范圍內的字符組成的集合,代替原來的 string1。
在 tr 的三類操作中都可以使用選項"-c"。
eg: echo "adcfghg" | tr -cd fgca // 將顯示 acfgg 輸入數據中不包含在 string1 中的字符范圍 是"dh" ,所以,實際上只是刪除了字符"dh"
3.tr 用於字符替換: 只需要同時給出 string1 和 string2,可以需要不指定特別的選項。
1) Usage: tr string1 string2
輸入數據中屬於 string1 字符范圍內的字符都將被替換,string1 中的第 n 個字符被替換為 string2 中的第 n個字符。
eg: echo "adcfgh" | tr adcgw vbnle // 將顯示 vbnflh (v 替換 a,b 退回 d ,n 替換 c,l 替換 g...)
2) 一般 string1 和 string2 的字符個數應該相同。如果字符個數不同,分為兩種情況:
① string1 的字符個數少於 string2 的字符個數: string2 種額外的字符將被忽略。
② string1 的字符個數多於 string2 的字符個數,又可分為兩種情況:
·對於 BSD 系列的系統: tr 會重復 string2 中的最后一個字符,直到補齊到 string1 一樣的長度。
·對於 System V 的系統 : tr 將截去 string1 中超長的部分。
GUN tr 使用 BSD 方式,如果想使用 System V 方式,需要指定選項"-t"。
eg: echo "addcfghg" | tr adcgw vbn // 將打印 vbbnfnhn
echo "addcfghg" | tr -t adcgw vbn // 將打印 vbbnfghg
3) tr 的字符替換操作主要用途有 大小寫轉換等。
eg: tr [a-z] [A-Z] < video.txt // 將文件 video.txt 中的所有小寫字母轉換成大寫字母
tr ":" "\011" < /etc/passwd // 將 passwd 文件的域分隔符改為"\011"即"TAB"
4.tr 用於刪除字符: 使用選項"-d"。
1) Usage: tr -d string1
輸入數據中所有在 string1 中出現過的字符都將被刪除。
2) echo "This is a note !"| tr -d [:space:] // 將打印 Thisisanote 即刪除所有空格
tr -cd "[a-z][A-Z][\n]"
5.tr 用於壓縮重復字符: 使用選項"-s"。壓縮操作可以單獨進行,也可以在替換操作或刪除操作之后進行,因而分成 3 種情況。
@blog.sina.com.cn/s/blog_54dd80920102v1wc.html
echo $dir | tr "." "\n"
(1) | 運算符
管道符號,是unix一個很強大的功能,符號為一條豎線:"|"。
用法:
command 1 | command 2
它的功能是把第一個命令command 1執行的結果作為command2的輸入傳給command 2,例如: ls -s | sort -nr
(2)Usage: tr string1 string2
輸入數據中屬於 string1 字符范圍內的字符都將被替換,string1 中的第 n 個字符被替換為 string2 中的第 n個字符。
eg: echo "adcfgh" | tr adcgw vbnle // 將顯示 vbnflh (v 替換 a,b 退回 d ,n 替換 c,l 替換 g...)
echo $dir | tr "." "\n"