研討:Bash 內建命令 read(轉)

post0發表於2007-08-11
研討:Bash 內建命令 read(轉)[@more@]

這是在"man bash"中的一段

程式碼:

read [-ers] [-u fd] [-t timeout] [-a aname] [-p prompt] [-n nchars] [-d delim] [name ...]

One line is read from the standard input, or from the file descriptor fd supplied as an argument to the -u option, and the first word is assigned to the first name, the second word to the second name, and so on, with leftover words and their intervening separators assigned to the last name. If there are fewer words read from the input stream than names, the remaining names are assigned empty values. The characters in IFS are used to split the line into words. The backslash character () may be used to remove any special meaning for the next character read and for line continuation. Options, if supplied, have the following meanings:

-a aname

The words are assigned to sequential indices of the array variable aname, starting at 0. aname is unset before any new values are assigned. Other name arguments are ignored.

-d delim

The first character of delim is used to terminate the input line, rather than newline.

-e If the standard input is coming from a terminal, readline (see READLINE above) is used to obtain the line.

-n nchars

read returns after reading nchars characters rather than waiting for a complete line of input.

-p prompt

Display prompt on standard error, without a trailing newline, before attempting to read any input. The prompt is displayed only if input is coming from a terminal.

-r Backslash does not act as an escape character. The backslash is considered to be part of the line. In particular, a backslash-newline pair may not be used as a line continuation.

-s Silent mode. If input is coming from a terminal, characters are not echoed.

-t timeout

Cause read to time out and return failure if a complete line of input is not read within timeout seconds. This option has no effect if read is not reading input from the terminal or a pipe.

-u fd Read input from file descriptor fd.

If no names are supplied, the line read is assigned to the ariable REPLY. The return code is zero, unless end-of-file is ncountered, read times out, or an invalid file descriptor is supplied as the argument to -u.

經測試發現許多shell資料中沒有介紹過的新內容,或許地球人都知道了^_^,不管怎樣希望有興趣的一起琢磨一下。

以下是我用來測試的程式碼,結果已經略去,請大家自行測試。

程式碼:

read -p "how old r u? " age

echo $age

read -p "some words? " -a words

echo ${words[*]}

read -p "Password: " -s passwd

echo $passwd

read -t 5 auth

echo $auth

read -n 1 key

read -dq -p "input something end with q: " menu

read -e file #在這試試命令歷史和補齊功能

有興趣的,別忘了跟貼^_

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-944886/,如需轉載,請註明出處,否則將追究法律責任。

相關文章