With the help of the
continue command, it is possible to exit from the current iteration of the loop and to resume the next iteration of the loop. We use the for, while, or until commands for loop iterations.
The following is the for_09.sh script for the loop with the continue command to skip a certain part of the loop commands:
#!/bin/bash
for x in 1 2 3
do
echo before $x
continue 1
echo after $x
done
exit 0Let's test the program:
$ chmod +x for_09.sh $ ./for_09.sh
The following will be the output after executing the preceding commands:
before 1 before 2 before 3
The following is the for_10.sh script, in which we will check all files and directories. If the file is found, we will print the name. If the directory is found, we will skip further processing with the continue command. Take care that any of your useful files with the name sample* are not in the testing directory before testing this script:
#!/bin/bash
rm -rf sample*
echo > sample_1
echo > sample_2
mkdir sample_3
echo > sample_4
for file in sample*
do
if [ -d "$file" ]
then
echo "skipping directory $file"
continue
fi
echo file is $file
done
rm -rf sample*
exit 0Let's test the program:
$ chmod +x for_10.sh $ ./for_10.sh
The following will be the output after executing the preceding commands:
file is sample_1 file is sample_2 skipping directory sample_3 file is sample_4
In the following script for_11.sh, we are checking the backup of files in the /MP3/ folder. If the file is not found in the folder, we are copying it into the folder for backup purposes. We can implement incremental backup scripts using this functionality:
#!/bin/bash
for FILE in 'ls *.mp3'
do
if test -e /MP3/$FILE
then
echo "The file $FILE exists."
continue
fi
cp $FILE /MP3
doneLet's test the program:
$ chmod +x for_11.sh $ ./for_11.sh
If the file exists in the MP3 folder, then the loop will continue to check the next file. If the file backup is not present in the MP3 folder, then the file will be copied to it.