shell read讀取標準輸入

2022-09-24 01:18:09 字數 2434 閱讀 5386

shell_read讀取標準輸入

1、基本讀取

read命令接收標準輸入(鍵盤)的輸入,或其他檔案描述符的輸入(後面在說)。得到輸入後,read命令將資料放入乙個標準變數中。下面是 read命令

的最簡單形式::

#!/bin/bash

echo -n "enter your name:"   //引數-n的作用是不換行,echo預設是換行

read  name                   //從鍵盤輸入

echo "hello $name,welcome to my program"     //顯示資訊

exit 0                       //退出shell程式。

//********************************

由於read命令提供了-p引數,允許在read命令列中直接指定乙個提示。

所以上面的指令碼可以簡寫成下面的指令碼::

#!/bin/bash

read -p "enter your name:" name

echo "hello $name, welcome to my program"

exit 0

在上面read後面的變數只有name乙個,也可以有多個,這時如果輸入多個資料,則第乙個資料給第乙個變數,第二個資料給第二個變數,如果輸入數 據個數過多,則最後所有的值都給第乙個變數。如果太少輸入不會結束。

//*****************************************

在read命令列中也可以不指定變數.如果不指定變數,那麼read命令會將接收到的資料放置在環境變數reply中。

例如::

read -p "enter a number"

環境變數reply中包含輸入的所有資料,可以像使用其他變數一樣在shell指令碼中使用環境變數reply.

2、計時輸入.

使用read命令存在著潛在危險。指令碼很可能會停下來一直等待使用者的輸入。如果無論是否輸入資料指令碼都必須繼續執行,那麼可以使用-t選項指定乙個 計時器。

-t選項指定read命令等待輸入的秒數。當計時滿時,read命令返回乙個非零退出狀態;

#!/bin/bash

if read -t 5 -p "please enter your name:" name

then 

echo "hello $name ,welcome to my script"

else

echo "sorry,too slow" fi

exit 0

除了輸入時間計時,還可以設定read命令計數輸入的字元。當輸入的字元數目達到預定數目時,自動退出,並將輸入的資料賦值給變數。

#!/bin/bash

read -n1 -p "do you want to continue [y/n]?" answer

case $answer in

y | y)

echo "fine ,continue";;

n | n)

echo "ok,good bye";; *)

echo "error choice";;

esac

exit 0

該例子使用了-n選項,後接數值1,指示read命令只要接受到乙個字元就退出。只要按下乙個字元進行回答,read命令立即

接受輸入並將其傳給變數。無需按回車鍵。  

3、默讀(輸入不顯示在監視器上)

有時會需要指令碼使用者輸入,但不希望輸入的資料顯示在監視器上。典型的例子就是輸入密碼,當然還有很多其他需要隱藏的資料。

-s選項能夠使read命令中輸入的資料不顯示在監視器上(實際上,資料是顯示的,只是 read命令將文字顏色設定成與背景相同的顏色)。

#!/bin/bash

read  -s  -p "enter your password:" pass

echo "your password is $pass"

exit 0 

4、讀檔案

最後,還可以使用read命令讀取linux系統上的檔案。

每次呼叫read命令都會讀取檔案中的"一行"文字。當檔案沒有可讀的行時,read命令將以非零狀態退出。

讀取檔案的關鍵是如何將文字中的資料傳送給read命令。

最常用的方法是對檔案使用cat命令並通過管道將結果直接傳送給包含read命令的 while命令

例子::

#!/bin/bash

count=1    //賦值語句,不加空格

cat test | while read line        //cat 命令的輸出作為read命令的輸入,read讀到的值放在line中 do

echo "line $count:$line"

count=$[ $count + 1 ]          //注意中括號中的空格。

done

echo "finish"

exit 0

AWK 怎麼讀取標準輸入(STDIN)

在 awk 系列中,我們將會看到幾個例子,你可以篩選其他命令的輸出代替從乙個檔案讀取輸入作為 awk 的輸入。我們首先從使用 dir 命令開始,它類似於 ls 命令。在第乙個例子下面,我們使用 dir l 命令的輸出作為 awk 命令的輸入,這樣就可以列印出檔案擁有者的使用者名稱,所屬組組名以及在當...

Linux tee 讀取標準輸入流命令

摘要1 摘要2 linux tee命令用於讀取標準輸入的資料,並將其內容輸出成檔案。tee指令會從標準輸入裝置讀取資料,將其內容輸出到標準輸出裝置,同時儲存成檔案。tee ai help version 檔案.引數 i或 ignore interrupts 忽略中斷訊號。version 顯示版本資訊...

從標準輸入行讀取輸入行並在標準輸出中列印這些輸入行

include include include define max cols 20 所處理的最大列號 define max input 1000 每個輸入行的最大長度 int read column numbers int columns,int max void rearrange char o...