這個 read 內部命令被用來從標準輸入讀取單行資料。這個命令可以用來讀取鍵盤輸入,當使用 重定向的時候,讀取檔案中的一行資料。這個命令有以下語法形式:
read [-options] [variable...]
這裡的 options 是下面列出的可用選項中的乙個或多個,且 variable 是用來儲存輸入數值的乙個或多個變數名。
如果沒有提供變數名,shell 變數 reply 會包含資料行。
基本上,read 會把來自標準輸入的字段賦值給具體的變數。如果我們修改我們的整數求值指令碼,讓其使用 read ,它可能看起來像這樣:
#!/bin/bash
# read-integer: evaluate the value of an integer.
echo -n "please enter an integer -> "
read int
if[[
"$int
"=~ ^-?[0-9]+$
]]; then
if[$int -eq 0 ]; then
echo
"$int
is zero."
else
if[$int -lt 0 ]; then
echo
"$int
is negative."
else
echo
"$int
is positive."
fi if
[$((int %
2)) -eq 0 ]; then
echo
"$int
is even."
else
echo
"$int
is odd."
fi fi
else
echo
"input value is not an integer." >&2
exit 1
fi
我們使用帶有 -n 選項(其會刪除輸出結果末尾的換行符)的 echo 命令,來顯示提示資訊, 然後使用
read 來讀入變數 int
的數值。執行這個指令碼得到以下輸出:
[me@linuxbox ~]$ read-integer
please enter an integer -> 5
5 is positive.
5 is odd.
read 可以給多個變數賦值,正如下面指令碼中所示:
#!/bin/bash
# read-multiple: read multiple values from keyboard
echo -n "enter one or more values > "
read var1 var2 var3 var4 var5
echo
"var1 = '
$var1
'"echo
"var2 = '
$var2
'"echo
"var3 = '
$var3
'"echo
"var4 = '
$var4
'"echo
"var5 = '
$var5
'"
在這個指令碼中,我們給五個變數賦值並顯示其結果。注意當給定不同個數的數值後,read 怎樣操作:
[me@linuxbox ~]$ read-multiple
enter one or more values > a b c d e
var1 = 'a'
var2 = 'b'
var3 = 'c'
var4 = 'd'
var5 = 'e'
[me@linuxbox ~]$ read-multiple
enter one or more values > a
var1 = 'a'
var2 = ''
var3 = ''
var4 = ''
var5 = ''
[me@linuxbox ~]$ read-multiple
enter one or more values > a b c d e f g
var1 = 'a'
var2 = 'b'
var3 = 'c'
var4 = 'd'
var5 = 'e f g'
如果 read 命令接受到變數值數目少於期望的數字,那麼額外的變數值為空,而多餘的輸入資料則會 被包含到最後乙個變數中。
如果 read 命令之後沒有列出變數名,則乙個 shell 變數,reply,將會包含 所有的輸入:
#!/bin/bash
# read-single: read multiple values into default variable
echo -n "enter one or more values > "
read
echo
"reply = '
$reply
'"
這個指令碼的輸出結果是:
[me@linuxbox ~]$ read-single
enter one or more values > a b c d
reply = 'a b c d'
使用各種各樣的選項,我們能用 read 完成有趣的事情。例如,
通過-p 選項,我們能夠提供提示資訊:
#!/bin/bash
# read-single: read multiple values into default variable
read -p "enter one or more values > "
echo
"reply = '
$reply
'"
shell 互動輸入
互動輸入與for語句 8 15 互動輸入 1 read的用法 read命令同時可以定義多個變數值,而輸入的內容預設可以空格為分配符,將值輸入到對應的變數中 如果預設值過多最後所有的值都會被賦予給最後乙個變數 2 如果預設是過少,多餘的變數則為空值。3 例項 read a b c aa bb cc 4...
shell指令碼 互動
命令格式 read option variable.常用選項 n num 從輸入中讀取num個字元 p prompt 使用 字串提示使用者進行輸入 s 保密模式,在螢幕上不顯示輸入的字元 t seconds 超時時間值和變數的三種情況 輸入的值少於變數的情況 bin bash ifread t 10...
shell指令碼中自動化互動輸入
有的shell指令碼需要互動輸入,如果需要批量或者自動化,可以根據實際情況按照如下方法處理 1.重定向 這個方法很簡單,把需要輸入的內容按每行寫入到文件中,然後執行指令碼 vpncmd content2.使用管道 echo e 3 n vpncmd3.使用expect expect是專門用來互動自動...