Linux -- shell programming summary for loop, while loop, until loop

1. For loop: for loop will assign one parameter to var
for loop format:

for var in parameter
do
	commands
done

Example:

for test in Nevada "New Hampshire" "New Mexico" "New York"
do
	echo "Now going to $test"
done

Read list from variable:

list="Alabama Alaska Arizona Arkansas Colorado"
list=$list" Connecticut"
for state in $list
do
	echo "Have you ever visited $state?"
done

Read value from command:

file="states"

for state in $(cat $file)
do
	echo "Visit beautiful $state"
done

2. IFS is called internal field separator, which is used by shell script to split. By default, spaces, tabs and line breaks are used as separators
Change IFS field separator:

file="states"

IFS=$'\n'
for state in $(cat $file)
do
	echo "Visit beautiful $state"
done

If you want to specify multiple IFS characters, the format is as follows:

IFS=$'\n':;
IFS There are no restrictions on defining character parsing

3. C style for loop:

for (( var assigment ; condition ; iteration process ))

Example:

for (( i=1; i <= 10; i++ ))
do
	echo "The next number is $i"
done

Define multiple variables (only one judgment end condition is allowed):

for (( a=1, b=10; a <= 10; a++, b-- ))
do
	echo "$a-$b"
done

4. while loop executes as long as the judgment is true
Format:

while [ Judgement formula ]
do
	commands
done

Example:

var1=10
while [ $var1 -gt 0 ]
do
	echo $var1
	var1=$[ $var1 - 1 ]
done

5. until loop: execute as long as the judgment is false
Format:

until [ Judgement formula ]
do
	command
done

Example:

var1=100

until [ $var1 -eq 0 ]
do
	echo $var1
	var1=$[ $var1 - 25 ]
done

6. Nested loop:
Example:

for (( a = 1; a <= 3; a++ ))
do
	echo "Starting loop $a:"
	for (( b = 1; b <= 3; b++ ))
	do
		echo "Inside loop $b:" 
	done
done

Loop processing / etc/passwd:

IFS.OLD=$IFS
IFS=$'\n'
for entry in $(cat /etc/passwd)
do
	echo "Value is $entry"
	IFS=:
	for value in $entry
	do
		echo " $value"
	done
done

Another command is provided: cut, - d: specify separator, - f: specify column, - b for byte, - c for character, and the default separator is tab
For example: cut - D: - F 2 / etc / passwd cut - D: - B 1-5 / etc / passwd
7. Exit loop break command: used to jump out of loop
Example:

for var1 in 1 2 3 4 5 6 7 8 9 10
do
	if [ $var1 -eq 5 ]
	then
		break
	fi
	echo "Iteeration number: $var1"
done
echo "The for loop is completed"

The break can be followed by a number to represent the level of the stop loop
Example:

for (( a=1; a<4; a++ ))
do
	echo "Outer loop $a"
	for (( b=1; b<100; b++ ))
	do
		if [ $b -gt 4 ]
		then
			break 2
		fi
		echo " Inner loop: $b"
	done
done

8. Pause a cycle continue
Example:

for (( var1=1; var1<15; var1++ ))
do
	if [ $var1 -gt 5 ] && [ $var1 -lt 10 ]
	then
		continue
	fi
	echo "Iteration number: $var1"
done

continue followed by a number is the same as break
Example:

for (( a = 1; a <= 5; a++ ))
do
	echo "Iteration $a:"
	for (( b = 1; b < 3; b++ ))
	do
		if [ $a -gt 2 ] && [ $a -lt 4 ]
		then
			continue 2 
		fi
		var3=$[ $a * $b ]
		echo "The reault of $a * $b os $var3"
	done
done

9. Handle the output of the loop. You can use the redirection symbol after the done to facilitate reading and management
Example:

for (( a = 1; a < 10; a++ ))
do
	echo "The number is $a"
done > test.txt
echo "The command is finished."

10. Example 1: find the executable file. When executing a program, the shell will go to the PATH environment variable to find it
Example:

IFS=:
for folder in $PATH
do
	echo "$folder:"
	for file in $folder/*
	do
		if [ -x $file ]
		then
			echo " $file"
		fi
	done
done
Published 6 original articles, won praise 1, visited 150
Private letter follow

Tags: shell

Posted on Tue, 04 Feb 2020 01:27:33 -0500 by limke