shell指令碼之輸入互動read

2021-07-28 22:19:03 字數 3076 閱讀 7279

這個 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是專門用來互動自動...