shell (two) shell for loop

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 

Guess you like

Origin www.cnblogs.com/codeBang/p/11950545.html