The until
command is similar to the while
command. The given statements in the loop are executed as long as they evaluate the condition as true. As soon as the condition becomes false, then the loop is exited.
The syntax is as follows:
until command do command(s) done
In the following script until_01.sh
, we are printing numbers 0-9 on screen. When the value of variable x
becomes 10, then the until
loop stops executing:
#!/bin/bash x=0 until [ $x -eq 10 ] do echo $x x=`expr $x + 1` done
Let's test the program:
$ chmod +x until_01.sh $ ./until_01.sh
The following will be the output after executing the preceding commands:
0 1 2 3 4 5 6 7 8 9
In the following script until_02.sh
, we ask the user to input text. We are printing entered text on the screen. When the user enters the text quit
, the until
loop ends the iterations:
#!/bin/bash INPUT="" until [ "$INPUT" = quit ] do echo "" echo 'Enter a word (quit to exit) : ' read INPUT echo "You typed : $INPUT" done
Let's test the program:
$ chmod +x until_02.sh $ ./until_02.sh
The following will be the output after executing the preceding commands:
Enter a word (quit to exit) : Ganesh You typed : Ganesh Enter a word (quit to exit) : Naik You typed : Naik Enter a word (quit to exit) : quit You typed : quit
In the following script until_03.sh
, we are passing the username as a command-line parameter to the script. When required, the user logs in the grep
command and will find it from the output of the who
command. Then, the until
loop will stop iterations and inform on screen about the user login:
#!/bin/bash until who | grep "$1" > /dev/null do sleep 60 done echo -e \a echo "***** $1 has just logged in *****" exit 0
Let's test the program:
$ chmod +x until_03.sh $ ./until_03.sh User10
The following will be the output after executing the preceding commands:
"***** User10 has just logged in *****"
This message will be displayed when user10
has logged into the server.