read命令介紹和test命令

2021-08-09 12:05:35 字數 3449 閱讀 8786

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...