Shell學習:Shell echo、printf、test命令,echotest
Shell學習:Shell echo、printf、test命令Shell echo命令
顯示一般字元串
echo "hello"
輸出:hello
這裡的雙引號完全可以省略,如下:
echo hello
輸出:hello
顯示逸出字元
echo "\"hello\""或者echo \"hello\"
輸出:”hello”
顯示變數
name="tom"echo "$name is a child"
輸出:tom is a child
顯示換行
# -e:開啟轉義echo -e "hello \nworld"
輸出:
helloworld
顯示結果定向至檔案
echo "hello world" > myfile.txt
執行cat myfile.txt命令,輸出
hello world
顯示日期
echo `date`
輸出:Tue Jan 16 06:30:53 PST 2018
Shell printf 命令
Shell printf命令模仿C程式庫(library)裡面的printf()程式。
printf由POSIX標準所定義,因此使用printf的指令碼比較使用echo移植性好。
printf的文法:
printf format-string [arguments...]
format-string:為格式控制字元串 arguments:為參數列表
eg:
[zhang@localhost ~]$ echo "hello,shell"hello,shell# 如果沒有分行符號,不換行[zhang@localhost ~]$ printf "hello world"hello world[zhang@localhost ~]$ # 使用分行符號[zhang@localhost ~]$ printf "hello,shell\n"hello,shell
printf佔位功能
eg:
#!/bin/bashprintf "%-10s %-8s %-4s\n" name sex weightprintf "%-10s %-8s %-4.2f\n" zhangsan male 68.22printf "%-10s %-8s %-4.2f\n" lisi male 70.02printf "%-10s %-8s %-.2f\n" xiaolongnv female 48.12
輸出:
name sex weightzhangsan male 68.22lisi male 70.02xiaolongnv female 48.12
預留位置有:%s,%d,%c,%f。
%-10s:表示寬度為10個字元,-表示靠左對齊,沒有表示靠右對齊。不足自動填滿空格。超過也會將內容全部顯示出來。
%-4.2f:表示格式化小數,其中.2表示保留2位小數。
%d:格式化數字
Shell test 命令
Shell中的test命令用於檢查某個條件是否成立,它可以進行數值、字元和檔案三個方面的測試。
數值測試
參數 |
說明 |
-eq |
等於則為真 |
-ne |
不等於則為真 |
-gt |
大於則為真 |
-ge |
大於等於則為真 |
-lt |
小於則為真 |
-le |
小於等於則為真 |
eg:
#!/bin/bashnum1=100num2=200if test $num1 -eq $num2then echo "$num1 equal $num2"else echo "$num1 not equal $num2"fi
結果:
100 not equal 200
字串測試
參數 |
說明 |
= |
等於則為真 |
!= |
不相等則為真 |
-z |
字串長度為0,則為真 |
-n |
字串的長度不為0,則為真 |
eg:
#!/bin/bashstr1="hello"str2="world"if test $str1 = $str2then echo "$str1 equal $str2"else echo "$str1 not equal $str2"fiif test -z $str1then echo "$str1 is empty"else echo "$str1 is not empty"fi
輸出結果:
hello not equal worldhello is not empty
檔案測試
參數 |
說明 |
-e |
如果檔案存在,則為真 |
-r |
如果檔案存在且可讀,則為真 |
-w |
如果檔案存在且可寫,則為真 |
-x |
如果檔案存在且可執行,則為真 |
-s |
如果檔案存在且至少有一個字元,則為真 |
-d |
如果檔案存在且為目錄,則為真 |
-f |
如果檔案存在且為檔案,則為真 |
-c |
如果檔案存在且為字串特殊檔案,則為真 |
-b |
如果檔案存在且為塊特殊檔案,則為真 |
eg:
在zhang使用者目錄下,執行ls -l命令:
執行test -e 命令:
[zhang@localhost ~]$ test -e 1.sh[zhang@localhost ~]$ if test -e 1.sh> then> echo "1.sh file exist"> else> echo "1.sh file not exist"> fi1.sh file exist
執行test -r 命令:
[zhang@localhost ~]$ if test -r 1.sh> then> echo "1.sh read ok"> else> echo "1.sh read not ok"> fi1.sh read ok
執行test -x 命令:
[zhang@localhost ~]$ if test -x myfile.txt> then > echo "myfile.txt is execute file"> else> echo "myfile.txt is not execute file"> fimyfile.txt is not execute file
執行test -d 命令:
[zhang@localhost ~]$ if test -d test> then> echo "test is a dir"> else> echo "test is not a dir"> fitest is a dir
<