輸入read用途:從標準輸入讀取一行,或者從文件描述符FD(file descriptor)中讀取一行,並且將其分割成欄位。 輸出(echo)用途 :在標準輸出上輸出傳遞過來的內容。 ...
2017-07-17 09:32:07
輸入read:
用途:
從標準輸入讀取一行,或者從文件描述符FD(file descriptor)中讀取一行,並且將其分割成欄位。
用法:
read [-ers] [-a 數組] [-d 分隔符] [-i 緩衝區文字] [-n 讀取字元數] [-N 讀取字元數] [-p 提示符] [-t 超時] [-u 文件描述符] [名稱 ...]
常用選項:
-a:(arrary) 將讀取得的字元劃分成單詞,按照數組存儲(從0開始)
源碼:
#!/bin/bash echo "按照單詞的分割放置到數組中,索引從0開始" read -a variable echo "第1個:" echo ${variable[0]} echo "第2個:" echo ${variable[1]} echo "第3個:" echo ${variable[2]} echo "第4個:" echo ${variable[3]}
運行效果:
按照單詞的分割放置到數組中,索引從0開始
34 ew qr34 3qr wer er qw
第1個:
34
第2個:
ew
第3個:
qr34
第4個:
3qr
-n:接收指定個數的字元,當達到接收的個術後,立即退出輸入狀態
源碼:
#-n read接收10個字元
echo "-n read接收10個字元"
read -n 10 num
echo
echo "接收的10個字元是:"${num}
運行效果:
-n read接受10個字元
sgfgsngfdf
接收的10個字元是:sgfgsngfdf
-p : 允許在read命令後直接指定一個提示,並且可以為多個變數賦值
源碼:
echo "使用-p參數完成多個變數賦值:"
read -p "請輸入三個數字或字元:(用空格隔開)" num1 num2 num3
echo "num1="$num1
echo "num2="$num2
echo "num3="$num3
運行效果:
使用-p參數完成多個變數賦值:
請輸入三個數字或字元:(用空格隔開)23 34 345
num1=23
num2=34
num3=345
-r:不允許反斜線轉義任何字元
-s:不將read輸入的數據顯示在屏幕上
源碼:
#-s read的輸入不顯示在屏幕上
echo "-s read的輸入不顯示在屏幕上:"
read -p "password:" -s password
echo
echo "password is "${password}
運行效果:
-s read的輸入不顯示在屏幕上:
password:
password is 3432 rq erewr w
-t :read命令等待輸入的秒數。當計時滿時,回返回一個非0的狀態,並且退出等待輸入。
源碼:
#-t read的輸入的等待時間
echo "將會等等待兩秒的輸入,超時後,會退出等待;返回非0數值"
read -t 2 num
echo ${num}
運行效果:
將會等等待兩秒的輸入,超時後,會退出等待;返回非0數值
-u:從文件描述符FD(file descriptor)讀取。
補充內容:文件描述符FD 文件描述符在形式上是一個非負整數。實際上,它是一個索引值,指向內核為每一個進程所維護的該進程打開文件的記錄表。當程式打開一個現有文件或者創建一個新文件時,內核向進程返回一個文件描述符。在程式設計中,一些涉及底層的程式編寫往往會圍繞著文件描述符展開。但是文件描述符這一概念往往只適用於UNIX、Linux這樣的操作系統。 習慣上,標準輸入(standard input)的文件描述符是 0,標準輸出(standard output)是 1,標準錯誤(standard error)是 2。儘管這種習慣並非Unix內核的特性,但是因為一些 shell 和很多應用程式都使用這種習慣,因此,如果內核不遵循這種習慣的話,很多應用程式將不能使用。
從文件讀取的例子:
源碼: # read接受文本作為輸入 echo " read接受文本作為輸入" cat test.sh | while read line #cat 命令的輸出作為read命令的輸入,read讀到的值放在line中 do echo echo "接收的文本字元是:"${line} done
運行效果:
read接受文本作為輸入 接收的文本字元是:#------------------------------------------ 接收的文本字元是:#------------------------------------------ 接收的文本字元是:# read接受文本作為輸入 接收的文本字元是:echo " read接受文本作為輸入" 接收的文本字元是:cat test.sh | while read line 接收的文本字元是:do 接收的文本字元是:echo 接收的文本字元是:echo "接收的文本字元是:"${line} 接收的文本字元是:done
2017-07-18 09:24:25
輸出(echo):
用途 :在標準輸出上輸出傳遞過來的內容。
用法:
echo [SHORT-OPTION]... [STRING]...
常用選項:
-n : 輸出內容不換行
源碼: #-n 輸出文字不換行 echo -n "this is a test echo "
運行效果:
this is a test echo hello
-e:輸出特殊字元的含義,也就是輸出字元轉義後的意義。
源碼: #-e 輸出特殊字元 echo "hello ,\n my name \tis ***" echo -e "hello ,\n my name \tis ***"
運行效果:
hello ,\n my name \tis ***
hello ,
my name is ***
特殊字元及其作用:
字元 | 作用 |
\t | 插入tab |
\n | 換行並且游標移動至行首 |
\f | 換行但游標停留在原來的位置 |
\b | 刪除前一個字元 |
\r | 游標移動至行首,但不換行 |
\\ | 插入\字元 |