Bash小技巧(慣用法)退出碼判斷(命令執(zhí)行成功與否的判斷)在Bash腳本中,,我們經常要先執(zhí)行某個命令行,,然后判斷它是否執(zhí)行成功,,這時我們要對它的退出碼進行判斷,。羅嗦一些的寫法如下:
if [ $? -eq 0 ] then echo "Success" fi 簡潔的寫法如下:
[ $? -eq 0 ] && echo "Success"
條件判斷的簡單寫法又如,,判斷是否有某個目錄,,如果沒有就終止腳本執(zhí)行,羅嗦一些的寫法如下:
if [ ! -d "$DIR" ]; then exit 1 fi 簡潔的寫法如下:
[ -d "$DIR" ] || exit 1
查找字符串好多人習慣上這樣寫:
cat /etc/passwd | grep root 其實下面的寫法更好,,不需要執(zhí)行cat命令、不需要管道線:
grep root /etc/passwd
here document的寫法一般人都這樣寫:
if true; then cat >some.txt <<EOF 123 345 567 789 EOF fi 這樣寫,最后那個EOF就要頂格寫,,破壞了程序應有的縮進格式,最好如下寫法:
if true; then cat >some.txt <<-EOF 123 345 567 789 EOF fi 注意EOF前面的減號,數據前面都用制表符,,不能用空格。
讀取文件的第一行很簡單:
head -1 file.txt 如果用sed來實現,可以是:
sed -n '1p' file.txt 但上面這個命令會導致整個文件都會讀取一遍,,對于大數據量的文件效率實在不高。如果能夠在讀取完了1行之后,,就不再讀取呢,下面的命令行可以做到:
sed -n '1p;1q' file.txt 檢索指定id的用戶名通常想到的方式是:
grep 502 /etc/passwd | cut -d: -f1
或者這樣:
grep 502 /etc/passwd | awk -F":" '{print $1}'
其實一條awk命令就可以做到,不需要用到管道線:
|
|