read 在這裡介紹兩個
read -p 讀數
read -t 超時時間
read -p "please input number1:" n1
please input number1:12
另外,判斷所輸入的引數是不是數字:
if [ $#
-ne2] ; then
##2在這裡指的是兩個數字
echo
"you input is wrong"
exit
1fi
測試方法test:
格式1:test <>
格式2:[<>]
格式3: [[<>]]
注意: 1和2等價
在中可以使用萬用字元進行模式匹配
&&,||,><,等操作符可以用於中,不能用於中**義可以)
[root@desk ~]# test -f file && echo true||echo false
false ##這兩個&&表示,測試結果如果為真則執行前面的(true),如果為假執行後邊的(false)
[root@desk ~]# test ! -f file && cat file|| touch fil
##如果不存在file,執行file,存在執行後邊的(touch)
中括號的:
[root@desk ~]# [ -f file ]&&echo 1 ||echo 0
0[root@desk ~]# [ ! -f file ]&&echo 1 ||echo 0
1
[root@desk ~]# [[ ! -f file && -d haha ]]&&echo 1 ||echo 0
0[root@desk ~]# [ ! -f file && -d haha ]&&echo 1 ||echo 0
-bash: [: missing `]'
0##在這裡表示檔案和目錄都存在為1,否則為0;下邊表示,不能加&&
[root@desk ~]# [ ! -f file ] && [ -d haha ]&&echo 1 ||echo 0
0[root@desk ~]# [ ! -f file -a -d haha ]&&echo 1 ||echo 0
0##用實現的功能,括號與括號之間用&&;在裡面用-a表示*+&&
字串的測試
test -z ##如果字串為0,則輸出為真
test -n ##如果字串不為0,則輸出為真
test 「str1」 = 「str2」 ##成立則為真
test 「str1」 != 「str2」 ##不成立則為真
[root@desk ~]# test
"asd" == "ad" &&echo 1 || echo 0
0[root@desk ~]# test
"asd" == "asd" &&echo 1 || echo 0
1[root@desk ~]# test
"asd" != "ad" &&echo 1 || echo 0
1[root@desk ~]# test
"asd" != "asd" &&echo 1 || echo 0
0
在中使用<,>等符號
[root@desk ~]# [ 2 < 1 ] && echo 1 || echo 0
1##可以很明顯的看出雖然沒有報錯,但邏輯存在問題
在單中要使用轉義符
[root@desk ~]# [ 2 \< 1 ] && echo 1 || echo 0
0##這樣就ok,還可以使用引數-ge
[root@desk ~]# [ 2 -ge 1 ] && echo 1 || echo 0
1[root@desk ~]# [ 2 -ge 3 ] && echo 1 || echo 0
0
並且在實際中常常用到:
[root@desk ~]# [ -f /etc/ha ] || ls
12 desktop fil public test.sh
123 anaconda-ks.cfg documents music sysconfig videos
1.sh a.sh downloads
##不存在的情況下執行||後邊的命令(一般是exit 5 退出)
注意:括號兩端必須要有空格!單只能用-a,-o,之類
雙可以用&&,||之類
一般而言,還有更簡便的方式:
[[ -f "1" ]] && echo 1 ##存在,輸出1
[[ -f "1" ]] || echo 0 ##不存在,輸出0
如果後邊要執行多條命令,需要用大括號括起來
字串的測試:
file存在
[root@desk ~]# [ -n "$file" ] && echo 1 || echo 0
1##-n測試字串,表示字串不為0為真
[root@desk ~]# [ -z "$file" ] && echo 1 || echo 0
0##-z測試字串,表示字串為0為真
字串比較,必須加引號
[root@desk ~]# test -d /etc && echo 1 ||echo 0
1[root@desk ~]# test 3 -ne 3 &&echo 1 ||echo 0
0
[root@desk ~]# test "$a" -nt "$b" && echo 1 || echo 0
0##-nt比較a和b誰新,-ot比較誰舊(比較的是最後修改時間)
乙個簡易的選單選項:
1
#!/bin/bash
2menu
() 10 menu
11read num
12echo
"you already choice: $num"
13 [ "$num"
-eq"1" ] &&
1718 [ $num = "2" ] &&
22 test "$num" = "3"&&
26 [ $num
-ne1
-a$num
-ne2
-a$num
-ne3 ] && echo
"you's input are wrong!"
echo命令和read命令
在shell中,echo命令是用來輸出指定的字串的,格式如下 echo 選項 字串 選項有 e 支援反斜槓轉義字元。n 輸出一行字串但不換行 echo命令是預設換行的 反斜槓轉義字元有 n 換行 c 取消預設換行 t 製表符 b 游標退一格 等。字串可不加雙引號,但若有 e 選項,就必須加雙引號,否...
read命令簡介
read命令 read命令是乙個內建命令,用於從終端或檔案讀取輸入,read命令讀取乙個輸入行,直至遇到換行符。行尾的換行符在讀入時被轉換成乙個空字元。如果read命令後未跟變數名,讀入的行將被賦給內建變數reply。你也可以使用read命令來中斷程式的執行,直至使用者輸入乙個回車。如果代 r選項,...
read 命令詳解
2012 08 12 13 59 33 分類 shell指令碼 標籤 舉報 字型大小大中 小訂閱 1.read的一些選項 read可以帶有 a,d,e,n,p,r,t,和 s八個選項。a 將內容讀入到數值中 echo n input muliple values into an array read...