for循环是编程语言中一种开界的循环语句,而循环语句[1] 由循环体及循环的终止条件两部分组成。

for 循环的基本格式

for 变量名 in 列表;do

循环体

done

执行机制:依次将列表中的元素赋值给“变量名” ; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束

列表生成方式:

直接给出列表

整数列表:{start..end}, $(seq [start [step]] end)

返回列表的命令:$(COMMAND)

使用glob通配符,如:*. sh

变量引用

for循环的一些例子

直接给出列表

for i in 1 2 3;do #写了一个变量 “i”,列表写了3个参数,

echo "$i" #打印一下i这个变量的值

done #for循环结束

执行结果

[root@CentOS7.3 bin]#bash -x for.sh #用bash -x来执行脚本,并查看过程

+ for i in 1 2 3

+ echo 1 #可以看到第一次赋值是1

1

+ for i in 1 2 3

+ echo 2 #第二次赋的值是2

2

+ for i in 1 2 3

+ echo 3 #第三次的值是3

3 #只有3个值所以循环了三次

[root@CentOS7.3 bin]#

2.整数型列表:计算100以内所有能被3整除的整数之和

sum=0 #先写一个变量sum并赋值0

for i in {1..100};do #变量名“i”,列表用{1..100}

if [[ $i%3 -eq 0 ]];then #用if判断“i”变量的值除以3的余数等不等于0

let sum+=i #如果余数等于0,“sum”的值就和“i”的值相加

fi #if判断结束

done #for循环结束

echo "100以内所有能被3整除的整数的和是$sum" #打印“sum”变量的值

unset sum i #删除变量

执行结果。由于过程比较长,所以忽略了一些过程

[root@CentOS7.3 bin]#bash -x for.sh #用bash -x来执行脚本,并查看过程

+ sum=0

+ for i in '{1..100}' #第一次循环

+ [[ 1%3 -eq 0 ]] #比对

+ for i in '{1..100}' #1除以3的有余数,所以直接进入第二次循环

+ [[ 2%3 -eq 0 ]]

+ for i in '{1..100}'

+ [[ 3%3 -eq 0 ]] #3除以3的余数等于0

+ let sum+=i #执行let

+ for i in '{1..100}'

+ [[ 4%3 -eq 0 ]]

+ for i in '{1..100}'

+ [[ 5%3 -eq 0 ]]

+ for i in '{1..100}'

+ [[ 6%3 -eq 0 ]]

+ let sum+=i

+ for i in '{1..100}'

+ [[ 7%3 -eq 0 ]]

+ for i in '{1..100}'

+ [[ 8%3 -eq 0 ]]

+ for i in '{1..100}'

+ [[ 9%3 -eq 0 ]]

+ let sum+=i

+ echo 100以内所有能被3整除的整数的和是1683 #打印结果

+ 100以内所有能被3整除的整数的和是1683

+ unset sum i #删除变量

注:{1..100}表示展开1到100

[root@CentOS7.3 app]#echo {1..10} #打印1dao10

1 2 3 4 5 6 7 8 9 10 #效果

3.命令的结果生成的列表:判断/etc目录下的文件的类型

for i in `ls /app/*`;do #如果要用命令生成列表要加反向单引号

if [ -f "$i" ] #判断$i的值是不是一个普通文件

then echo "$i 是一个普通文件" #是普通文件就标准输出到屏幕

sleep 0.5 #停顿0.5秒

elif [ -d "$i" ];then #判断$i的值是不是一个目录

echo "$i 是一个目录" #是目录就标准输出到屏幕

sleep 0.5 #停顿0.5秒

fi

done

执行结果

[root@CentOS7.3 app]#bash -x for.sh #用bash -x来执行脚本,并查看过程

++ ls /app/backup.sh /app/logbackup.sh /app/meminfo.sh

+ for i in '`ls /app/*`'

+ '[' -f /app/backup.sh ']'

+ echo '/app/backup.sh 是一个普通文件'

/app/backup.sh 是一个普通文件

+ sleep 0.5

+ for i in '`ls /app/*`'

+ '[' -f /app/logbackup.sh ']'

+ echo '/app/logbackup.sh 是一个普通文件'

/app/logbackup.sh 是一个普通文件

+ sleep 0.5

+ for i in '`ls /app/*`'

+ '[' -f /app/meminfo.sh ']'

+ echo '/app/meminfo.sh 是一个普通文件'

/app/meminfo.sh 是一个普通文件

+ sleep 0.5

4.使用通配符

for i in /ect*;do #用通配符

if [ -f "$i" ]

then echo "$i 是一个普通文件"

sleep 0.5

elif [ -d "$i" ];then

echo "$i 是一个目录"

sleep 0.5

fi

done

执行结果

[root@CentOS7.3 app]#bash -x for.sh

+ for i in '/etc/*'

+ for i in '`ls /app/*`'

+ '[' -f /app/backup.sh ']'

+ echo '/app/backup.sh 是一个普通文件'

/app/backup.sh 是一个普通文件

+ sleep 0.5

+ for i in '`ls /app/*`'

+ '[' -f /app/logbackup.sh ']'

+ echo '/app/logbackup.sh 是一个普通文件'

/app/logbackup.sh 是一个普通文件

+ sleep 0.5

+ for i in '`ls /app/*`'

+ '[' -f /app/meminfo.sh ']'

+ echo '/app/meminfo.sh 是一个普通文件'

/app/meminfo.sh 是一个普通文件

+ sleep 0.5

5.引用变量来生成列表

for i in "$@" ;do #用系统变量$@,建议如果要引用变量要加双引号

if [ -f "$i" ]

then echo "$i 是一个普通文件"

sleep 0.5

elif [ -d "$i" ];then

echo "$i 是一个目录"

sleep 0.5

fi

done

执行结果

[root@CentOS7.3 app]#bash -x /app/for.sh /boot #输入一个参数/boot

+ for i in '"$@"'

+ '[' -f /boot ']' #这里显示/boot,引用变量成功

+ '[' -d /boot ']'

+ echo '/boot 是一个目录'

/boot 是一个目录

+ sleep 0.5

注:$@是一个特殊变量,作用是传递给脚本或函数所有输入的参数。

linux脚本格式for循环,Linux Shell脚本之for循环相关推荐

  1. 嵌入式 Linux 入门(五、Shell 脚本编程上:认识 Shell 脚本)

    大家好,是矜辰所致,嵌入式 Linux入 门第五课,本课开始简单学习一下 Shell 脚本编程. 目录 前言 一.Shell 脚本基础说明 1.1 什么是 Shell 脚本 1.2 Shell 脚本的 ...

  2. Linux配置脚本导出运行,linux服务器部署jar包以及shell脚本的书写

    背景:记录在linux环境下部署jar程序的过程 1 部署过程记录 1.1 程序结构 这里的main函数就在DemRest2.java 文件中. 为了部署方便,要做到以下两点: 1 在导出的jar包中 ...

  3. linux 递归删除 空目录命令,使用shell脚本实现递归删除空目录

    平时一般使用php脚本实现一些文件管理功能,总归没有shell脚本强大,虽然本人不会写shell脚本,但是读懂shell脚本还是没问题的.对于"递归删除空目录"这样简单的功能使用p ...

  4. linux exec 脚本之家,详解Shell脚本中调用另一个Shell脚本的三种方式

    主要以下有几种方式: Command Explanation fork 新开一个子 Shell 执行,子 Shell 可以从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回给父 ...

  5. linux时间格式怎么写,linux基础--时间格式

    在linux中,经常会使用各种时间格式,特别在shell脚本中会经常调用,默认的时间格式为[root@liang-study ~]# date Wed Dec 14 19:43:07 CST 2016 ...

  6. 怎么编写Linux脚本循环语句,shell脚本及常用循环语句

    博文结构 什么是shell 简单编辑shell 循环语句 一.什么是shell及作用 Shell字面理解就是个"壳",是操作系统(内核)与用户之间的桥梁,充当命令解释器的作用,将用 ...

  7. linux循环条件,shell脚本编写 之 条件选择,条件判断,循环语句

    1 概述 编写shell脚本,一般离不开条件选择,条件判断以及循环语句.掌握这三个语法,将大大提高脚本的编写效率,使得脚本编写更加灵活,完成X相对复杂的工作 2 条件选择if语句 if语句选择执行,逐 ...

  8. linux 循环小时,shell脚本日期遍历(按天按小时)

    使用shell脚本遍历日期 1. 按天倒序遍历日期 ( 正序修改一下日期增减函数即可 ) #!/bin/bash #倒序按天遍历日期 #传入遍历的开始时间和结束时间 startdate="$ ...

  9. linux中脚本循环语句,Shell脚本循环语句

    Shell作为一种脚本编程语言,同样了包含了循环,分支等其他程序控制结构,从而能够轻松完成更加复杂.强大的功能.我们今天就来认识if.for.while.case语句的具体应用. 一.使用if语句结构 ...

  10. linux命令行开头是sh,shell脚本语言的使用(超全超详细)

    1.shell的概述 shell 是一种脚本语言 脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译) shell 既是应用程序 又 ...

最新文章

  1. 使用Python+OpenCV+yolov5实现行人目标检测
  2. 技术道路独行16载,他总结了CTO的五大自我修炼法则!
  3. [SPOJ705]不同的子串
  4. mysqlbinlog_flashback工具体验
  5. java getresourceasstream null_java踩坑记-getResourceAsStream
  6. JAVA数据结构与算法【稀疏数组】
  7. 简易版的等待/唤醒方法(sleep,wait,await,park区别)适合面试回答
  8. 时序约束系列之D触发器原理和FPGA时序结构
  9. 2022.1.25 Python可视化实战:这些医院离司机究竟有多远?
  10. python三维图形等高线_python等高线
  11. Firefox插件的安装及使用方法(持续更新中)
  12. 安然公司特殊目的实体(SPEs)解读
  13. Reincarnation
  14. 蓝桥杯——罗马数字转换器
  15. 计算机科学与技术单身率,中国大陆男女比例揭晓!大学单身率专业十强来了
  16. iphone11各机型对比_9款旗舰系统对比 iPhone 11居然不是最好用的
  17. C#获取同花顺,问财V(hexin-v)值
  18. Borel measurability
  19. 【自嗨笔记#1】微博疫情舆情分析---信息爬取部分
  20. 并行流parallel 和 parallelStream

热门文章

  1. MasterCAM 车铣复合编程加工视频教程
  2. python json.loads_Python:json.loads返回前缀为'u'的项目
  3. ConcurrentHashMap详解
  4. 解决在putty下,vim powerline箭头显示乱码的问题
  5. Java游戏服务器开发之二--导航帖
  6. C/C++ Linux 后台服务器开发高级架构师学习知识路(架构师篇)
  7. HTML5游戏开发(十)
  8. 虫术python绝技下载_《虫术——Python绝技》梁睿坤著【摘要 书评 在线阅读】-苏宁易购图书...
  9. SEOer淘宝电商网站店铺优化使用的神奇工具
  10. 以太坊:RLP编码,Recursive Length Prefix