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...