Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

Bash Shell Scripting/Input-Output

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

The read built-in From help read: read: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...] Read a line from the standard input and split it into fields. read is great for both user inputs and reading standard inputs/piping. An example of user input: # 'readline' prompt default variable name read -e -p "Do this:" -i "destroy the ship" command echo "$command" Or even simpler: pause() { read -n 1 -p "Press any key to continue..."; } Hello-world level example of stdout operation: echo 'Hello, world!' | { read hello echo $hello } Just be creative. For example, in many ways read can replace whiptail. Here is an example, extracted from Arthur200000's shell script: # USAGE # yes_or_no "title" "text" height width ["yes text"] ["no text"] # INPUTS # $LINE = (y/n) - If we should use line-based input style(read) # $_DEFAULT = (optional) - The default value for read yes_or_no() { if [ "$LINE" == "y" ]; then echo -e "\e[1m$1\e[0m" echo '$2' | fold -w $4 -s while read -e -n 1 -i "$_DEFAULT" -p "Y for ${5:-Yes}, N for ${6:-No}[Y/N]" _yesno; do case $_yesno in [yY]|1) return 0 ;; [nN]|0) return 1 ;; *) echo -e "\e[1;31mINVALID INPUT\x21\e[0m" esac else whiptail --title "${1:-Huh?}" --yesno "${2:-Are you sure?}" ${3:-10} ${4:-80}\ --yes-button "${5:-Yes}" --no-button "$6{:-No}"; return $? fi } # USAGE # user_input var_name ["title"] ["prompt"] [height] [width] # INPUTS # $LINE = (y/n) - If we should use line-based input style(read) # $_DEFAULT = (optional) - The default value for read; defaults to nothing. user_input(){ if [ "$LINE" == "y" ]; then echo -e "\e[1m${2:-Please Enter:}\e[0m" | fold -w ${4:-80} -s read -e -i "${_DEFAULT}" -p "${3:->}" $1 else eval "$1"=$(whiptail --title "$2" --inputbox "$3" 3>&1 1>&2 2>&3) fi } Shell redirection In shells, redirection is used for file I/O. The most common usage of is to redirect standard streams (stdin, stdout and stderr) to accept input from another program via piping, to save program output as a file, and to suppress program output by redirecting a stream to /dev/null. Piping