Recently someone asked me about accepting bash inputs. So I decided to take a stab at writing a little about it up. For the initial one we’ll look at accepting text input. Here, we’ll just sandwich a read statement between two echo commands. In the first echo we’ll ask for a name of a variable. Then we’ll read it in with the read command. And in the second echo we’ll write it out. Using the variable involves using the string of the variable (myvariable in this case) with a dollar sign in front of it, as in $myvariable below:echo "Please choose a number: " read myvariable echo "You picked $myvariable"
Read also has a number of flags available to it:-a assignssequential indexes of the array variable -d sets a delimiter toterminate the input -e acceptsthe line. -n returns after reading a specified number ofcharacters -p promptswithout a trailing newline, before attempting to read any input -r doesn’t usea backslash as an escape character -s runs silent, which doesn’t echo text -t: causes read to time out (number of seconds is right after the -t) -u reads input from a file descriptor
Next, we’ll build on that read statement (note the addition of -p) and use a while to force a user to input a y or n and then parse their selection with a basic case statement:while true; do read -p "Do you wish to continue?" yn case $yn in [Yy]* ) echo "Add your action here"; break;; [Nn]* ) exit;; * ) echo "Please answer yes or no.";; esac done
Finally, let’s look at positional parameters. Here, you can feed them at the tail end of the script, as words that are separated by spaces after the name of the script. Here, we simply just echo $0, which is the first position (aka the name of the script you just ran) and $1 and $2 as the next two.#!/bin/bash echo "You Used These" echo '$0 = ' $0 echo '$1 = ' $1 echo '$2 = ' $2
You could also take $3, $4, etc. This is different than writing flags, which requires a bit more scripting. So if you called the script with:
You would see:You Used These $0 = ./pospar.sh $1 = test1
What tips/additions do you have?
本文系统（linux）相关术语:linux系统 鸟哥的linux私房菜 linux命令大全 linux操作系统