Shell脚本for循环语句应用

记录:430

场景:Shell脚本for循环语句应用。

版本:CentOS Linux release 7.9.2009。

1.for循环常用格式

1.1格式:for(;;)

for((expression1; expression2; expression3))
do
  command1
  command2
  ...
  commandN
done

1.2格式:for in

for item in item1 item2 ... itemN
do
  command1
  command2
  ...
  commandN
done

2.使用for(;;)遍历数组

2.1脚本

脚本名称:b2023051801.sh

脚本内容:

#!/bin/bash

#1.定义数组
cityArray=("上海" "苏州" "杭州")

#2.获取数组长度
lenth=${#cityArray[@]}

#3.使用for循环遍历数组
for ((i=0; i<lenth; i++))
do 
  echo "第$((i+1))个城市名称: ${cityArray[i]}"
done

2.2执行与输出

执行命令:bash b2023051705.sh

执行结果:

第1个城市名称: 上海
第2个城市名称: 苏州
第3个城市名称: 杭州

3.使用for in遍历数组(使用@字符)

3.1脚本

脚本名称:b2023051802.sh

脚本内容:

#!/bin/bash

#1.定义数组
cityArray=("上海" "苏州" "杭州")

#2.使用for循环遍历数组
for item in ${cityArray[@]}
do 
  echo "城市名称: ${item}"
done

3.2执行与输出

执行命令:bash b2023051802.sh

执行结果:

第1个城市名称: 上海
第2个城市名称: 苏州
第3个城市名称: 杭州

4.使用for in遍历数组(使用*字符)

4.1脚本

脚本名称:b2023051803.sh

脚本内容:

#!/bin/bash

#1.定义数组
cityArray=("上海" "苏州" "杭州")

#2.使用for循环遍历数组
for item in ${cityArray[*]}
do 
  echo "城市名称: ${item}"
done

4.2执行与输出

执行命令:bash b2023051803.sh

执行结果:

第1个城市名称: 上海
第2个城市名称: 苏州
第3个城市名称: 杭州

5.使用for in遍历字符串(字符串之间带空格)

5.1脚本

脚本名称:b2023051804.sh

脚本内容:

#!/bin/bash

#1.使用for循环遍历字符串,字符串间带空格
for item in "杭州" "苏州" "上海"
do 
  echo "城市名称: ${item}"
done

5.2执行与输出

执行命令:bash b2023051804.sh

执行结果:

城市名称: 杭州
城市名称: 苏州
城市名称: 上海

6.使用for in遍历数字(数字之间带空格)

6.1脚本

脚本名称:b2023051805.sh

脚本内容:

#!/bin/bash

#1.使用for循环遍历数字,数字间带空格
for item in 1024 2048 4096
do 
  echo "数字: ${item}"
done

6.2执行与输出

执行命令:bash b2023051805.sh

执行结果:

数字: 1024
数字: 2048
数字: 4096

7.使用for in遍历数字范围(两个数字之间值包括本身)

7.1脚本

脚本名称:b2023051806.sh

脚本内容:

#!/bin/bash

#1.使用for循环遍历数字,两个数字之间的值
for item in {112..118}
do 
  echo "数字: ${item}"
done

7.2执行与输出

执行命令:bash b2023051806.sh

执行结果:

数字: 112
数字: 113
数字: 114
数字: 115
数字: 116
数字: 117
数字: 118

8.使用for in遍历字符范围(两个字符串之间值包括本身)

8.1脚本

脚本名称:b2023051807.sh

脚本内容:

#!/bin/bash

#1.使用for循环遍历字符,两个字符之间的值
for item in {A..b}
do 
  printf "%c" ${item}
done

8.2执行与输出

执行命令:bash b2023051807.sh

执行结果:

ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`ab

9.使用for in遍历命令执行结果(使用$()方式)

9.1脚本

脚本名称:b2023051808.sh

脚本内容:

#!/bin/bash

#1.使用for循环遍历命令执行结果
for item in $(cat province.txt)
do
    echo "${item}" 
done

9.2执行与输出

执行命令:bash b2023051808.sh

执行结果:

长三角省份有浙江、江苏等。
长三角最大都市是上海。
长三角经济发达。

10.使用for in遍历命令执行结果(使用``方式)

10.1脚本

脚本名称:b2023051809.sh

脚本内容:

#!/bin/bash

#1.使用for循环遍历命令执行结果
for item in `cat province.txt`
do
    echo "${item}" 
done

10.2执行与输出

执行命令:bash b2023051809.sh

执行结果:

长三角省份有浙江、江苏等。
长三角最大都市是上海。
长三角经济发达。

11.使用for in遍历文件列表(使用``方式)

11.1脚本

脚本名称:b2023051810.sh

脚本内容:

#!/bin/bash

#1.使用for循环遍历命令执行结果
for item in `ls *.sh`
do
    echo "${item}" 
done

11.2执行与输出

执行命令:bash b2023051810.sh

执行结果:

b2023051801.sh
b2023051802.sh
b2023051803.sh
b2023051804.sh
b2023051805.sh
b2023051806.sh
b2023051807.sh
b2023051808.sh
b2023051809.sh
b2023051810.sh

12.使用for in遍历通配符匹配结果

12.1脚本

脚本名称:b2023051811.sh

脚本内容:

#!/bin/bash

#1.使用for循环遍历通配符执行结果
for item in *.sh
do
    echo "${item}" 
done

12.2执行与输出

执行命令:bash b2023051811.sh

执行结果:

b2023051801.sh
b2023051802.sh
b2023051803.sh
b2023051804.sh
b2023051805.sh
b2023051806.sh
b2023051807.sh
b2023051808.sh
b2023051809.sh
b2023051810.sh
b2023051811.sh

13.使用for in遍历特殊变量($*和$@)

13.1脚本

脚本名称:b2023051812.sh

脚本内容:

#!/bin/bash

#1.使用for循环遍历$@
function f1(){
for item in $@
do
    echo "${item}" 
done
}


#2.使用for循环遍历$*
function f2(){
for item in $*
do
    echo "${item}"
done
}

echo '1.遍历$@执行结果'
f1 "杭州" "苏州" "上海"
echo '2.遍历$*执行结果'
f2 "Hangzhou" "Suzhou" "Shanghai"

13.2执行与输出

执行命令:bash b2023051812.sh

执行结果:

1.遍历$@执行结果
杭州
苏州
上海
2.遍历$*执行结果
Hangzhou
Suzhou
Shanghai

14.使用for in遍历特殊变量(省略特殊字符)

14.1脚本

脚本名称:b2023051813.sh

脚本内容:

#!/bin/bash

#1.使用for循环遍历省略特殊变量
function f1(){
for item
do
    echo "${item}" 
done
}

14.2执行与输出

执行命令:bash b2023051813.sh

执行结果:

1.遍历省略特殊变量执行结果
杭州
苏州
上海

15.使用for in查找指定目录下文件

15.1脚本

脚本名称:b2023051814.sh

脚本内容:

#!/bin/bash

#1.获取当前目录路径
dirPath=`pwd`
#2.查找当前目录的下一级目录名称
for dirName in `find . -maxdepth 1 -type d -name "tutorial*"`
do
  result=$(echo "${dirName}" | grep "tutorial-2023")
  if [[ "${result}" != "" ]];then
    echo "目录名称: ${result}"
  fi
done

15.2执行与输出

执行命令:bash b2023051814.sh

执行结果:

目录名称: ./tutorial-20230517
目录名称: ./tutorial-20230518

以上,感谢。

2023年5月18日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值