When using select commands it’s better to use PS3 prompt to provide meaningful information to user.
Some of the “prompt commands/Alias” available for PS3 prompt are as below.
d – the date in “Weekday Month Date” format (e.g., “Tue May 26”)
e – an ASCII escape character (033)
h – the hostname up to the first .
H – the full hostname
j – the number of jobs currently run in background
l – the basename of the shells terminal device name
n – newline
r – carriage return
s – the name of the shell, the basename of $0 (the portion following the final slash)
t – the current time in 24-hour HH:MM:SS format
T – the current time in 12-hour HH:MM:SS format
@ – the current time in 12-hour am/pm format
A – the current time in 24-hour HH:MM format
u – the username of the current user
v – the version of bash (e.g., 4.00)
V – the release of bash, version + patch level (e.g., 4.00.0)
w – Complete path of current working directory
W – the basename of the current working directory
! – the history number of this command
# – the command number of this command
$ – if the effective UID is 0, a #, otherwise a $
nnn – the character corresponding to the octal number nnn
– a backslash
[ – begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
] – end a sequence of non-printing characters
Below is a select command script which do not use PS3 prompt in it.
#!/bin/bash
select var1 in abc ced efg hij
do
echo “Present value of var1 is $var1”
done
Save the above file as selectexe.sh and start executing above script as shown below.
bash selectexe.sh
1) abc
2) ced
3) efg
4) hij
#? 1
Present value of var1 is abc
#? 2
Present value of var1 is ced
#? 3
Present value of var1 is efg
#? 4
Present value of var1 is hij
#?
If you see you are prompted with a prompt: ‘#?’ to enter a choice, This is default prompt used by select command which is assigned to PS3 variable. If you want to change this default prompt from #? to some other we can do that as well by defining PS3 before executing select command at the prompt or in script as shown below script.
#!/bin/bash
PS3=’Please enter a number from above list: ‘
select var1 in abc ced efg hij
do
echo “Present value of var1 is $var1”
done
Save the above file to selctexe1.bash and start executing it
bash selectexe.sh
1) abc
2) ced
3) efg
4) hij
Please enter a number from above list: 2
Present value of var1 is ced
Please enter a number from above list: 3
Present value of var1 is efg
Please enter a number from above list:
If you see the difference the prompt got changed from default #? to “Please enter a number from above list:”
We can use above mention control strings to give you a meaning full prompt when you are taking inputs from users. In our next post we will see how to use PS4 prompt.
Latest posts by Surendra Anne (see all)
- Docker: How to copy files to/from docker container - June 30, 2020
- Anisble: ERROR! unexpected parameter type in action:
Fix - June 29, 2020 - FREE: JOIN OUR DEVOPS TELEGRAM GROUPS - August 2, 2019
- Review: Whizlabs Practice Tests for AWS Certified Solutions Architect Professional (CSAP) - August 27, 2018
- How to use ohai/chef-shell to get node attributes - July 19, 2018