学习是自己的事情。

scripts are for lazy people.

Linux Shell

循环语句是任何一门语言都不能缺失的部分。shell 里也是一样,只是语法不太一样。如果学过其他的编程语言,就很容易掌握。

1. for 循环

for 循环的语法疾结构为:

for f in * ; do

statement "$f"

done

这里的 f 就是迭代的元素,* 可以是一个数组或是 list,也可以是命令管道。

还有另外一种写法:

for f in *

do

statement "$f"

done

可以根据自己的喜好选择一种写法。

新建一个脚本文件,打印出所有输入的参数:

#!/bin/bash

echo "You are using $(basename $0)"

for n in $*

do

echo "Hello $n"

done

exit 0

运行结果如下:

for loop

在循环中,可以使用continue和break关键字,具体用法与其他语言里是一样的。continue表示在循环体内,跳过当前循环,执行下次的循环;而break表示退出整个循环,后面的循环和代码不再执行。

看具体看例子。

$ for f in * ; do

[ -d "$f" ] || continue

chmod 3777 "$f"

done

如果是目录,添加权限;如果不是,跳过当前循环,continue 后面代码不再执行,而是直接执行下次循环。

$ for f in * ; do

[ -d "$f" ] && break

done

echo "We have found a directory $f"

上面的脚本,在循环中一旦发现目录,则立即停止循环并退出。

2. while 循环

while 循环可以说是 for 循环的一个变体,只要特定条件为真,while 语句就会执行。具体看例子,

COUNT=10

while (( COUNT >= 0 )) ; do

echo -e "$COUNT \c"

(( COUNT-- ))

done ;

echo

3. until 循环

until循环与while语句的功能正好相反:只要特定条件为假,它就重复。下面是一个与前面的 while 循环具有同等功能的 until 循环。

COUNT=10

until (( COUNT < 0 )) ; do

echo -e "$COUNT \c"

(( COUNT-- ))

done ;

echo

实例联系

现在,我们做一个用户选择界面,这样,根据提示输入不同的参数来执行不同的功能,这里我们需要用到while循环,和前面讲过的case条件选择。

#!/bin/bash

while true ; do

clear

echo "Choose an item: a, b or c"

echo "a: Backup"

echo "b: Display Calendar"

echo "c: Exit"

read -sn1

case "$REPLY" in

a) tar -czvf $HOME/backup.tgz ${HOME}/JavaSource;;

b) cal;;

c) exit 0;;

esac

read -n1 -p "Press andy key to continue"

done

根据提示,如果输入 a 的话,则把 home 目录下的 JavaSource 目录压缩打包。

输入b,显示当前月份。

输入c,程序退出。

linux迭代同步文件,Linux Shell——迭代循环相关推荐

  1. linux的头文件下载,Linux内核头文件(linux headers)

    更新 Linux 内核头文件(linux headers) 三 8th, 2013 2,474 views | 发表评论 | Trackback 一般来说,如果不是自己编译 kernel,那么更新头文 ...

  2. linux新建脚本文件,linux shell脚本编程2—修改文件时间和创建新文件即touch命令的使用...

     在使用ls命令时,每个文件在Linux下面都会记录3个主要的修改时间: modification time(mtime,修改时间):当该文件的"内容数据"更改时,就会更新这个时 ...

  3. linux scp 同步文件夹,Solaris下用scp自动同步文件

    1. scp同步文件脚本 //syntest.sh #!/bin/bash # Setting cdm path is used to store client software host_dir=& ...

  4. linux云同步文件夹,在Linux系统上备份Dropbox同步文件夹的方法

    本文介绍在Linux系统上备份Dropbox同步文件夹的方法,确保Dropbox文件夹中的数据安全的一种好方法是创建本地备份.在Linux上,有很多不同的方法可以创建备份,因此我们将介绍简单实用的方法 ...

  5. linux+传输文件时卡住,linux - rsync 同步文件时卡住不动

    具体表现是:我使用rsync往服务器同步文件,我设置了超时timeout=5(不设置这个值也会出现这样的问题),然后运行大约1小时后,不断出现timeout的错误提示,出现大约10多个后,程序卡在rs ...

  6. linux nc 传送文件,Linux下nc命来实现文件传输

    发送端: cat test.txt | nc -l -p 6666 或者nc -l -p 6666 < test.txt 有些版本不要在 -p [监听6666端口,等待连接](设发送端IP为10 ...

  7. linux dd 截文件,Linux使用dd命令快速生成大文件(转)

    dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero ...

  8. Linux用于账号文件,linux的文件及账号管理

    正如linux的准则描述的那样:Linux一切皆文件.当我们创建文件时,都会有一个默认属性,这与umask有关.我们知道可以可以使用使用数字来表示属性:r::4,w:2,x:1.而一般情况下用户建立的 ...

  9. linux管理Windows文件,Linux与Windows互传文件,用户组管理和用户管理

    一.与Windows互传文件 linux和windows互传文件,需要使用Xshell,Linux系统需要安装lrzsz包. yum install -y lrzsz //linux安装lrzsz包 ...

最新文章

  1. 实例 - 购物车 (列表、循环)
  2. 两个列表之间移动数据
  3. 捷易拍sdk开发指南.doc_每个Android开发都必须知道的利器
  4. Spring-framework应用程序启动loadtime源码分析笔记(二)——@Transactional
  5. pc控制iphone的软件_嗑技热点 | 苹果M1芯片:对PC行业的降维打击
  6. 机器学习——One-Hot编码
  7. laravel连接mysql8_php – 如何使用laravel运行MySql 8?
  8. python讲统计学 书籍_数据分析最需要的12本中文书(从入门到高阶)
  9. 设置页数自增页眉/页脚——Word中page域代码的使用
  10. Python使用Opencc库完成字符繁简体转换
  11. 域名Whois信息查询接口
  12. 米世金《货币经济学》思维导图 附自制PPT
  13. 2019 年第 28 周 DApp 影响力排行榜 | TokenInsight
  14. 景深与光圈与焦距关系
  15. 震惊!网瘾少年在冒险岛的逆袭之路
  16. 计算机视觉-棋盘格标定
  17. 计算机培训ppt教案,教师计算机培训教案.ppt
  18. Long monitor contention with owner
  19. PL/SQL Developer 14 配置
  20. 【9】核心易中期刊推荐——图像视觉与图形可视化

热门文章

  1. editview只输入英文_入门小百科丨如何在电脑/手机输入日语
  2. 3d 多相机分流_徕卡电影四摄的华为Mate30 Pro到底有多猛?开箱了解一下!
  3. P9:卷积神经网络的工程实践技巧
  4. 【题解】(图论) —— POJ 0719:拓扑排序
  5. 如何调用gitee仓库真实图片链接
  6. 【实用】Putty常见错误汇总
  7. html元素不可见的三种方式
  8. LLVM和clang
  9. js中的getBoundingClientRect()函数
  10. c/c++教程 - 2.4.2.1~2 对象的初始化和清理,构造函数和析构函数,构造函数的分类和调用(有参构造,无参构造,普通构造,拷贝构造,括号法,显示法,隐式转换法,匿名对象)