for loop
A basic example
for i in var1 var2 var2
do
echo $i
done
for i in {1..100}
do
echo $i
done
List of complex values, you can use quotation marks or an escape character to restrain
# 双引号
for i in var1 "var2 var2" var4 "var5 var6"
do
echo $i
done
输出:
var1
var2 var2
var4
var5 var6
# 转义符
for var in var1 var2\'2 a\'b
do
echo $var
done
输出:
var1
var2'2
a'b
for var in var1 "var2\'2 a\'b"
do
echo $var
done
输出:
var1
var2\'2 a\'b
Values from variables
list="a b c"
for i in $list
do
echo $i
done
输出:a b c
The value from the command
for i in `cat /etc/hosts`
do
echo $i
done
输出:
##
#
Host
Database
#
#
localhost
is
used
to
configure
Custom delimiter
the for loop, a space for the default separator, the separator can be customized by the IFS
- Colon as the delimiter IFS =:
- Semicolon colon delimiter is a double quotation mark IFS = :; "
- Newline character as the delimiter to IFS = $ '\ n'
IFS=$'\n'
for i in `cat /etc/hosts`
do
echo $i
done
输出:
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
C-style for
for ((i=0; i<10; i++))
do
echo $i
done
输出:
0
1
2
3
4
5
6
7
8
9
Exercises
用for循环10次,输出两个数字之和
示例:
num is 1 9
num is 2 8
num is 3 7
num is 4 6
num is 5 5
num is 6 4
num is 7 3
num is 8 2
解:
# 第一种解法
for (( a=1, b=9; a<9; a++, b-- ))
do
echo num is $a $b
done
# 第二种解法
a=0
b=10
for i in {1..9}
do
let a++
let b--
echo num is $a $b
done
# 如果需要求和
for (( a=1, b=9; a<9; a++, b-- ))
do
sum=$(( $a + $b ))
echo num is $a + $b = $sum
done