shell–標準輸入輸出(read&echo)

?輸入read:

  用途:

    從標準輸入讀取一行,或者從文件描述符FD(file descriptor)中讀取一行,并且將其分割成字段。  

用法:  read [-ers] [-a 數組] [-d 分隔符] [-i 緩沖區文字] [-n 讀取字符數] [-N 讀取字符數] [-p 提示符] [-t 超時] [-u 文件描述符] [名稱 …]

  常用選項:  

-a:(arrary) 將讀取得的字符劃分成單詞,按照數組存儲(從0開始)


  #!/bin/ -  ${variable[  ${variable[  ${variable[  ${variable[]}

<strong>運行效果:<br/></strong>

按照單詞的分割放置到數組中,索引從0開始
34 ew qr34 3qr wer er qw
第1個:
34
第2個:
ew
第3個:
qr34
第4個:
3qr

?

-n:接收指定個數的字符,當達到接收的個術后,立即退出輸入狀態


源碼:
#- -n     ${num}

<strong>運行效果:<br/></strong>

-n read接受10個字符
sgfgsngfdf
接收的10個字符是:sgfgsngfdf

-p : 允許在read命令后直接指定一個提示,并且可以為多個變量賦值


源碼:
 -p    $num3

<strong>運行效果:<br/></strong>
使用-p參數完成多個變量賦值:  請輸入三個數字或字符:(用空格隔開)23 34 345 num1=23num2=34num3=345
 <br/>

? ? ?-r:不允許反斜線轉義任何字符

? ? ?-s:不將read輸入的數據顯示在屏幕上


源碼:
#- -p  -    ${password}

<strong>運行效果:<br/></strong>

-s read的輸入不顯示在屏幕上:
password:
password is 3432 rq erewr w

? ? ?-t :read命令等待輸入的秒數。當計時滿時,回返回一個非0的狀態,并且退出等待輸入。


源碼:
#- -t  ${num}

<strong>運行效果:<br/></strong>

將會等等待兩秒的輸入,超時后,會退出等待;返回非0數值

?

? ? ?-u:從文件描述符FD(file descriptor)讀取。

?

  補充內容:文件描述符FD
  文件描述符在形式上是一個非負整數。實際上,它是一個索引值,指向內核為每一個進程所維護的該進程打開文件的記錄表。當程序打開一個現有文件或者創建一個新文件時,內核向進程返回一個文件描述符。在程序設計中,一些涉及底層的程序編寫往往會圍繞著文件描述符展開。但是文件描述符這一概念往往只適用于UNIX、Linux這樣的操作系統
  習慣上,標準輸入(standard input)的文件描述符是 0,標準輸出(standard output)是 1,標準錯誤(standard error)是 2。盡管這種習慣并非Unix內核的特性,但是因為一些 shell 和很多應用程序都使用這種習慣,因此,如果內核不遵循這種習慣的話,很多應用程序將不能使用。

 從文件讀取的例子:

<br/>

  test. |

<br/>運行效果:
read接受文本作為輸入    接收的文本字符是:#------------------------------------------    接收的文本字符是:#------------------------------------------    接收的文本字符是:# read接受文本作為輸入    接收的文本字符是:echo " read接受文本作為輸入"    接收的文本字符是:cat test.sh | while read line    接收的文本字符是:do    接收的文本字符是:echo    接收的文本字符是:echo "接收的文本字符是:"${line}    接收的文本字符是:done

?

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享