read默認從標准輸入讀取數據,而這里的管道符會將前面ls命令的結果作為標准輸遲好舉入傳遞給read命令。所以只要前面還有數據,read命令就不會等待用戶襪伍輸入。
其實,這里可以用 for ... in ... 結構來替代while循環。
forl1in`ls$d1`
do
碼碧read-p"1or0"y1
......
done
㈡ shell腳本read命令的用法
read命令是讀取用戶在鍵盤上輸入的信息,然後賦值到一個變數中;read命令是最常用的一個命令,它主要有三個參數,我們一個一個的講解;
最基本用法:
echo-n "輸入你的姓名:"
read name
echo "你的姓名$name"
echo後面的-n是指不換行,應為echo默認是換行的;
--------------------------------------------------------------------------
read -p用法
它的作用是在使用read的命令行是可以直接指定一個提示,例如
read -p "輸入你的姓名" name
也就是把echo省略掉了;
-----------------------------------------------------------------------------
read -t用法
使用read命令後,如果你不在鍵盤上輸入一個信息,那系統會一直等待著你的輸入,而-t的用法就相當於計時器的作用,幾秒中內要是沒有輸入信息,那read命令便不會再等下去;
read -t 5 -p "在五秒內輸入你的姓名" name
-----------------------------------------------------------------------------
read -s用法
隱藏輸入的值,就是在鍵盤上輸入密碼這一類的保密數據時不實時的顯示出來;
㈢ shell腳本中的read和done
while循環結構如下:
while 條件
do
...
done
應該前桐洞梁面還有個do的。這是固定結構,滿足條件就會一直循環下去。
因為最後有輸入重定向符號<,將整個while循環條件的輸入指定為config變數定義的文顫笑件。所以,read會逐行讀取這個文件中的欄位(每行兩個欄位)分別作為server和ip。
需要注意的是,config.ini文件中的標題行也會被讀入。
man read,說明中可以看局運到,如果讀成功的話,read返回讀取的位元組數;讀到文件的末尾則返回0。而對於while來講,條件為0表示為false,則退出循環。
㈣ shell腳本怎樣讀取文件的值,並賦值給變數
在sell腳本中,讀取鍵盤輸入的內容並將其賦值給shell變數的命令為:
read -p "input a val:" val echo $val
read - 從標准輸入讀取數值。這個 read 內部命令被用來從標准輸入讀取單行數據。這個命令可以用來讀取鍵盤輸入,當使用 重定向的時候,讀取文件中的一行數據。
它的語法形式一般是:
read [-options] [variable...]
(4)shellread命令擴展閱讀:
Shell是一種腳本語言,常見的腳本解釋器有:
bash:是Linux標准默認的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的縮寫,內部命令一共有40個。
sh: 由Steve Bourne開發,是Bourne Shell的縮寫,sh 是Unix 標准默認的shell。
常見的編程語言分為兩類:一個是編譯型語言,如:c/c++/java等,它們遠行前全部一起要經過編譯器的編譯。
㈤ shell編程 read -p 命令不能執行
if語句喚絕本來就是執行某一個滿足條件的語句,你把man的賦值在 $ID -eq 1 的時候,這時候是執行不到$man = $y下面的語句體的,它棗鏈擾會跳過這個,這時候if語句執行完畢。你寫的本來就有問題。兩個if語句嵌套就好了。凳旦
#!/bin/sh
y=y
n=n
ID=$(ps -ef|grep tomcat |grep -v grep|grep tomcat|awk '{print $3}')
echo "this is tomcat start/stop shell"
if [ $ID -eq 1 ] #當ID=1 表示tomcat 開啟 如果是執行下面的參數
then
read -p "y or n :" man # read -p 輸入一個變數 man
if [ $man = $y ] #在判斷如果輸入的是y
then
$(/home/tomcat/apache-tomcat-8.5.5/bin/shutdown.sh) #
fi
echo "yes is stop tomcat"
else
echo " error "
fi
㈥ shell的read什麼時候會執行失敗
read如果有指定超時時間,則超時時會失敗旅衫脊;
一個無效的文件句柄,比如read line < a.conf,塌慎而a.conf這個文件不存在;
收到信號,比如ctrl+c;
讀到文件末尾。
暫時拆滲只知道這四個,歡迎補充!!!
㈦ shell read讀取到錯誤的輸入
Linux有緩沖區的概念,read是從輸入緩沖區去讀的,如果緩沖區里已經有數據了,那麼就直接拿過來了。在readss之前先用另一條read語句將緩沖區數據讀走,緩沖區即清空了,這時再輸入就可以被readss讀到了。
這固然是一個辦法,但同時也帶來一個問題:如果在20s等待時間內沒有任何輸入,那麼腳本就會要求你輸入兩次。
所以,完善的解決方案應該如下:
sleep20
read-t1discard
read-p"Pleaseinput:"ss
echo$ss
使用read的超時機制,超時時間設為1s,這已經是最短的超時時間設置了。
這樣即使在等待時間內沒有任何輸入,第一條read命令在1s超時後也會自動退出。
參考:http://superuser.com/questions/276531/clear-stdin-before-reading
㈧ 在Shell腳本中,讀取鍵盤輸入的內容並將其賦值給Shell變數的命令是什麼
在sell腳本中,讀取鍵盤輸入的內容並將其賦值給shell變數的命令為:
read-p"inputaval:"valecho$val
read - 從標准輸入讀取數值。這個 read 內部命令被用來從標准輸入讀取單行數據。這個命令可以用來讀取鍵盤輸入,當使用 重定向的時候,讀取文件中的一行數據。
它的語法形式一般是:
read[-options][variable...]
這里的 options 是下面列出的可用選項中的一個或多個,且 variable 是用來存儲輸入數值的一個或多個變數名。 如果沒有提供變數名,shell 變數 REPLY 會包含數據行。
基本上,read 會把來自標准輸入的欄位賦值給具體的變數。
㈨ 在read命令中,哪個選項可以控制輸入字元:
read命令常用選項:-a,-p,-s,-t,-n,可攔扮以控制輸入字元。read命令是Shell內建命令,用於從標准輸入或-u選項指定的文件描述符中讀取單行,並將讀取的單行根據IFS變數分割成多個字首者段,並將分割後的欄位分別賦值給指定的變數列表var_name。者衡薯
㈩ 用shell寫腳本的時候,read命令報錯,本來想read一個name變數的,運行之後這行報錯。
應該是格式錯誤吧。
重新再輸入一遍看看,不要用復制粘貼。