Bash內建命令 read

2021-10-05 23:56:41 字數 2324 閱讀 3854

read

[-ers]

[-a aname]

[-d delim]

[-i text]

[-n nchars]

[-n nchars]

[-p prompt]

[-t timeout]

[-u fd]

[name …]

從標準輸入中讀取一行,或從-u選項指定的檔案描述符fd讀取一行,拆成單詞後,依次賦值給name

$ echo 1 2 3 >foo

$ read a b c $ echo

$a+$b=$c

1+2=3

$ read -u 3 e f g 3$ echo

$e+$f=$g

1+2=3

如果拆出來的單詞比name多,最後乙個name承接餘下的單詞和分隔符

$ echo 1 2 3 >foo

$ read a b $ echo

$a,$b

1,2 3

如果拆出來的單詞比name少,那麼多出來的name設為空值

$ echo 1 2 3 >foo

$ read a b c d$ echo

$a,$b,$c,$d

.1,2,3,.

ifs裡的字元被用作拆解單詞的分隔符。

$ echo 1,2 3 >foo

$ ifs=,

$ read a b c$ echo$a1

$ echo

$b2 3

$ echo

$c$ unset ifs # 恢復ifs

$ read a b c$ echo

$a1,2

$ echo$b3

$ echo

$c

反斜槓字元""可用於刪除下乙個讀取的字元的特殊含義或連線多行。

$ echo

"abc\\

> efg"

>foo

$ cat foo

abc\

efg$ read a $ echo

$aabcefg

如果不提供name,讀取的行儲存在reply裡

$ echo abcdefg >foo

$ read

$ echo

$reply

abcdefg

$ echo a b c >foo

$ read -a bar $ declare -p bar

declare -a bar=

([0]

="a"

[1]=

"b"[2]

="c"

)

$ echo

"abc

> def"

>foo

$ cat foo

abcdef

$ read a $ echo

$aabc

$ read -d e a $ echo

$aabc d

$ echo

"abc

> def"

>foo

$ cat foo

abcdef

$ read -n 2 a $ echo

$aab

$ read -n 4 a $ echo

$aabc

$ echo

"abc

> def"

>foo

$ cat foo

abcdef

$ read -n 5 a $ echo

$aabc d

$ read -p "how old are you?" a

how old are you?12

$ echo

$a12

$ echo

"abc\\

> efg"

>foo

$ cat foo

abc\

efg$ read -r a $ echo

$aabc\

$ read -s -p "how old are you?" a

how old are you?

$ echo

$ait's a secret!

如下情況,退出值不為0:

Bash指令碼教程之read命令

用法 引數 ifs 變數 有時,指令碼需要在執行過程中,由使用者提供一部分資料,這時可以使用read命令。它將使用者的輸入存入乙個變數,方便後面的 使用。使用者按下回車鍵,就表示輸入結束。read命令的格式如下。read options variable.上面語法中,options是引數選項,var...

Bash內建命令 shopt

1.shopt 命令簡介 2.shopt 引數含義說明 3.shopt 使用示例 1 extglob 引數 shopt 命令用於顯示和設定shell中的行為選項,通過這些選項以增強shell易用性。shopt命令若不帶任何引數選項,則可以顯示所有可以設定的shell操作選項。shopt psu op...

Bash 內建引數

ppid 該bash的呼叫者process id.pwd 目前的工作目錄。oldpwd 上乙個工作目錄。reply 當read命令 沒有引數 時,直接設在reply上。uid user id。euid effective user id。bash bash的完整路徑。bash version bas...