Linux Shell篇之二:Shell编程条件语句(1)
2015-07-30 08:48
706 查看
Linux Shell篇之二:Shell编程条件语句(1)一、条件语句if
在LinuxShell编程中,if、for、while、case等条件流程控制语句用的非常多,把这些学好,对提升脚本的功力有非常大的帮助。下面将逐个来讲解具体的用法:
if条件判断语句格式
if (表达式) #if ( Variable in Array )语句1else语句2 fi
注:():表示比较数字大小的运算
练习if语句
例1:测试数字大小
![](http://s3.51cto.com/wyfs02/M01/70/3F/wKiom1W08JrB1DsgAAEMWOZKUSI168.jpg)
![](http://s3.51cto.com/wyfs02/M02/70/3D/wKioL1W08oTzKxT6AACJIzwPPNg131.jpg)
查看具体的执行过程,添加参数-x
![](http://s3.51cto.com/wyfs02/M02/70/3F/wKiom1W08QTS-_RkAAFaWPphqF0620.jpg)
例2:测试目录是否存在,不存在则新建
[ -d /data/shell ]:表示判断目录存在;
![](http://s3.51cto.com/wyfs02/M01/70/3D/wKioL1W09s3inbGUAACktxNiRiE052.jpg)
[b][ ! -d /data/shell ]:表示判断目录不存在;[/b]
[b]
![](http://s3.51cto.com/wyfs02/M02/70/C0/wKiom1W8eGXjnqOlAACcb0XUIJU948.jpg)
[/b]
结果输出:
[b][/b]
[b]
![](http://s3.51cto.com/wyfs02/M00/70/BD/wKioL1W8erKBfX7cAACYlzJu-R4532.jpg)
[/b]
注:中括号的两边必须要有空格!
例3:使用if条件语句编写MySQL备份脚本
![](http://s3.51cto.com/wyfs02/M00/70/7F/wKiom1W4pu2AhyEGAAJgTTOAO8k463.jpg)
执行语句并查看:
![](http://s3.51cto.com/wyfs02/M01/70/7C/wKioL1W4qNyyibtnAAJGsRp-p8A138.jpg)
注:这里是LAMP的环境,并不是源码包安装的mysql!
如果是源码包安装的,就需要填写完整的路径,不是直接使用mysqldump的命令!
二、循环语句for
语法:
for i(变量) in 字符串do语句1done
注:if可以与for整合使用;但是while可以当做条件来循环,功能更强大!
循环语句for练习
例1:列打印1-9:
![](http://s3.51cto.com/wyfs02/M01/70/C4/wKiom1W9lBOh5NqWAAAo5T6LOnU599.jpg)
![](http://s3.51cto.com/wyfs02/M00/70/C4/wKiom1W9nZaTutlXAABXxYGwTu4750.jpg)
![](http://s3.51cto.com/wyfs02/M02/70/C1/wKioL1W9okqw4uikAABEwuHpaE0309.jpg)
![](http://s3.51cto.com/wyfs02/M02/70/C1/wKioL1W9okqCVNPAAAAwkmzL_kM941.jpg)
行打印1-9:
![](http://s3.51cto.com/wyfs02/M00/70/C4/wKiom1W9o43QhcTFAABIiUCe6og869.jpg)
![](http://s3.51cto.com/wyfs02/M02/70/C4/wKiom1W9o43h9ishAABIj1kmrmQ106.jpg)
![](http://s3.51cto.com/wyfs02/M01/70/C1/wKioL1W9pYLBrniYAABeWeMEyfA007.jpg)
例2:打印3行内容
![](http://s3.51cto.com/wyfs02/M01/70/A7/wKioL1W7FZCi_Ut-AACAtJbW89c469.jpg)
![](http://s3.51cto.com/wyfs02/M01/70/AA/wKiom1W7E5_zlLQTAACAfhvNC7s852.jpg)
![](http://s3.51cto.com/wyfs02/M01/70/A7/wKioL1W7FcWhlCehAABFW0u5Et4573.jpg)
注:表达式:$(( j=j+1 ))=expr $j + 1
)必须用引号,否则会当成命令;
例3:循环IP
![](http://s3.51cto.com/wyfs02/M01/70/C1/wKioL1W9qVmzhbLHAABM3y6-Zc4723.jpg)
![](http://s3.51cto.com/wyfs02/M01/70/C5/wKiom1W9p2WS47j4AADiGcXzQLw625.jpg)
把这个IP服务器列表导入到一个文件中:
sh twenty-four.sh >>ip.txt
让这20台服务器批量运行命令:如查看本地磁盘的使用情况;
ssh -l root 192.168.174.16 'df -h'
出现错误:Address 192.168.174.16 maps to localhost, but this does not map back to the address – POSSIBLE BREAKIN ATTEMPT!
解决办法:修改这个文件:/etc/ssh/ssh_config yes改成no!并重启系统即可!
![](http://s3.51cto.com/wyfs02/M01/70/C2/wKioL1W9thXxmRGWAAQfFpw2Utg181.jpg)
再次执行:ssh -l root 192.168.174.16 'df -h'
![](http://s3.51cto.com/wyfs02/M02/70/C2/wKioL1W9trGjuwi6AADOvby8Or0042.jpg)
做成免密钥的登录方式:ssh-keygen
需求:本地机器ssh登录服务器:无需输入密码,即可查看着20台服务器的磁盘使用情况!单向即可!
步骤1:ssh-keygen -t dsa:将会生成密钥文件和私钥文件id_dsa id_dsa.pub
![](http://s3.51cto.com/wyfs02/M02/70/C9/wKiom1W-G7Oix7f1AAIgPKw4dzk093.jpg)
步骤2:在B上新建目录:mkdir .ssh
将 .pub 文件复制到B机器的 .ssh 目录:
scp /root/.ssh/id_dsa.pub root@192.168.174.17:/root/.ssh/
或者,
ssh-copy-id -i /root/.ssh/id_dsa.pub 192.168.174.17:/root/.ssh/
![](http://s3.51cto.com/wyfs02/M00/70/C6/wKioL1W-IPbSo_gDAADpCeRnxzo751.jpg)
![](http://s3.51cto.com/wyfs02/M00/70/C9/wKiom1W-Hx-B2-6ZAAAt3SwEXAI893.jpg)
步骤3:并将id_dsa.pub的内容添加到~/.ssh/authorized_keys中:
cat id_dsa.pub >> ~/.ssh/authorized_keys
![](http://s3.51cto.com/wyfs02/M02/70/F4/wKioL1XB7h6B3TFJAABsL_BFOqI109.jpg)
步骤4:目录.ssh和文件authorized_keys的权限必须是600
![](http://s3.51cto.com/wyfs02/M01/70/C9/wKiom1W-IKnSdIWPAAC1QBRzsmY147.jpg)
完成这些工作后,用户从本地机器到远程机器的登录就不用密码了!
![](http://s3.51cto.com/wyfs02/M00/70/F7/wKiom1XB7hewWryvAAFg9iAjriE598.jpg)
步骤5:编辑脚本文件:
![](http://s3.51cto.com/wyfs02/M00/70/C9/wKiom1W-JiqBJ2ANAABSP1uCulg435.jpg)
步骤6:把脚本的内容导入到IP.txt文件:
sh twenty-five.sh >>ip.txt
并查看ip.txt的内容:
![](http://s3.51cto.com/wyfs02/M01/70/C6/wKioL1W-KN3R_oybAAA41PsYLMs020.jpg)
步骤7:把这个脚本批量执行:
![](http://s3.51cto.com/wyfs02/M00/70/C6/wKioL1W-KB7TyDB8AAGMoZ1OyUs476.jpg)
例4:还可以利用这个脚本来复制多个文件到多台服务器上:
步骤1:编辑脚本:
![](http://s3.51cto.com/wyfs02/M01/70/C9/wKiom1W-KqGjM2kYAABg-e4LQXI608.jpg)
步骤2:执行脚本:
![](http://s3.51cto.com/wyfs02/M01/70/C6/wKioL1W-LJXjeGCTAARD-oq3FXs780.jpg)
步骤3:查看输出结果!
![](http://s3.51cto.com/wyfs02/M02/70/C6/wKioL1W-LJaDra6dAAIr0MuH86A680.jpg)
2、求和值
![](http://s3.51cto.com/wyfs02/M02/70/C6/wKioL1W-MaOQHtL7AABhRsJmdTY356.jpg)
![](http://s3.51cto.com/wyfs02/M02/70/C9/wKiom1W-L6-yWdEcAAAkpgHf1_Q534.jpg)
3、同时解压多个文件
![](http://s3.51cto.com/wyfs02/M01/70/C6/wKioL1W-Nf7A0CwvAABPoZZc2Q4515.jpg)
![](http://s3.51cto.com/wyfs02/M01/70/C6/wKioL1W-Nf7CN9F8AAA3_P6RbuU076.jpg)
4、同时打包和还原多个文件
gzip格式:把文件打包,以.gz为结尾,并删除原文件,只留下打包过的文件!
![](http://s3.51cto.com/wyfs02/M00/70/C6/wKioL1W-OFmheuudAANp3wM6Ewo895.jpg)
![](http://s3.51cto.com/wyfs02/M00/70/C6/wKioL1W-PXiSBAi0AAOfee9stzE459.jpg)
![](http://s3.51cto.com/wyfs02/M00/70/CA/wKiom1W-O4TS1H_0AAHaPGM3zP0786.jpg)
如何还原批量的.sh文件?
for i in `ls /tmp/`;do tar -xzf /tmp/$i -C /data/shell/;done
![](http://s3.51cto.com/wyfs02/M00/70/D6/wKioL1W_PynjWGg7AAHqBexY9L8921.jpg)
六、循环语句while
语法:
while 条件语句do 语句1 done
练习while
例1:逐行读取某个文件
![](http://s3.51cto.com/wyfs02/M01/70/E5/wKiom1XAiLbzd5UCAAA9dm0QDtg278.jpg)
![](http://s3.51cto.com/wyfs02/M02/70/E2/wKioL1XAiq3QMYKZAACNnVV4UNY853.jpg)
mysql -uroot -p123 discuz </etc.hosts.sql
例2:
当需要把一台服务器上的资源,部署到远端的一台服务器上,需要使用以下脚本:
scp -r /data/app/www1 root@192.168.174.17:/var/www/html
![](http://s3.51cto.com/wyfs02/M01/70/EF/wKioL1XBqtuARwZQAABGxyP3N7o014.jpg)
rsync -aP /data/app/www1 root@192.168.174.17:/var/www/html
当需要把资源服务器上的内容,批量部署到特定的服务器时候,就需要用到以下的脚本:
需求:把192.168.174.16:/data/app/www1,同步到192.168.174.17:/var/www/html
编辑这个脚本:
![](http://s3.51cto.com/wyfs02/M00/70/E5/wKioL1XA0CGxi5hcAAAwe8jwooo336.jpg)
运行脚本:
![](http://s3.51cto.com/wyfs02/M02/70/E8/wKiom1XAzirQpFDBAAB7iqfnmrI275.jpg)
效果:
![](http://s3.51cto.com/wyfs02/M01/70/ED/wKiom1XBhlCBHOeWAABpkUWFfm0372.jpg)
再把带#的一行内容过滤:
![](http://s3.51cto.com/wyfs02/M01/70/E8/wKiom1XAzvXC_9DBAABDvu1nNR0594.jpg)
效果:
![](http://s3.51cto.com/wyfs02/M02/70/E5/wKioL1XA0O3ircjaAABlMUX-u2g243.jpg)
如何分别取出其中的3段内容?
echo /data/app1/www1 root@192.168.174.17 /var/www/html/
![](http://s3.51cto.com/wyfs02/M02/70/F3/wKiom1XBqRmi1zTuAAE8spEt7vU901.jpg)
运行以下脚本:
![](http://s3.51cto.com/wyfs02/M02/70/EF/wKioL1XBqzegJjTPAADD3jpgIjs974.jpg)
![](http://s3.51cto.com/wyfs02/M01/70/EF/wKioL1XBqzfzgm8GAACUycTGz9Q985.jpg)
过滤掉:scp -r root@:/
![](http://s3.51cto.com/wyfs02/M02/70/EF/wKioL1XBqqXw7epgAACH0GQTQcE371.jpg)
这里利用了ip.txt_swp这个临时文件,过滤掉了#那行的内容!
![](http://s3.51cto.com/wyfs02/M02/71/13/wKiom1XEWJ6QxB_xAAEvWRf7u_8017.jpg)
脚本执行的过程如下:
![](http://s3.51cto.com/wyfs02/M02/71/13/wKiom1XEV6bAY8J5AACSexXVgmc680.jpg)
效果如下:
![](http://s3.51cto.com/wyfs02/M01/71/0F/wKioL1XEXTPDLHlLAAB4Ckp94no645.jpg)
![](http://s3.51cto.com/wyfs02/M01/71/13/wKiom1XEWzfCZiYYAACN7iskUcg161.jpg)
七、util循环语句
语法:直到满足条件,才退出。否则执行action
until 条件 doactiondone
例1:条件判断数字
![](http://s3.51cto.com/wyfs02/M02/70/E5/wKioL1XA6MLj8fgHAABEWeTJYxo888.jpg)
![](http://s3.51cto.com/wyfs02/M02/70/E9/wKiom1XA5szR2Y1pAAA1OtRaPD8658.jpg)
本文出自 “柏书兵-系统运维” 博客,转载请与作者联系!
在LinuxShell编程中,if、for、while、case等条件流程控制语句用的非常多,把这些学好,对提升脚本的功力有非常大的帮助。下面将逐个来讲解具体的用法:
if条件判断语句格式
if (表达式) #if ( Variable in Array )语句1else语句2 fi
注:():表示比较数字大小的运算
练习if语句
例1:测试数字大小
![](http://s3.51cto.com/wyfs02/M01/70/3F/wKiom1W08JrB1DsgAAEMWOZKUSI168.jpg)
![](http://s3.51cto.com/wyfs02/M02/70/3D/wKioL1W08oTzKxT6AACJIzwPPNg131.jpg)
查看具体的执行过程,添加参数-x
![](http://s3.51cto.com/wyfs02/M02/70/3F/wKiom1W08QTS-_RkAAFaWPphqF0620.jpg)
例2:测试目录是否存在,不存在则新建
[ -d /data/shell ]:表示判断目录存在;
![](http://s3.51cto.com/wyfs02/M01/70/3D/wKioL1W09s3inbGUAACktxNiRiE052.jpg)
[b][ ! -d /data/shell ]:表示判断目录不存在;[/b]
[b]
![](http://s3.51cto.com/wyfs02/M02/70/C0/wKiom1W8eGXjnqOlAACcb0XUIJU948.jpg)
[/b]
结果输出:
[b][/b]
[b]
![](http://s3.51cto.com/wyfs02/M00/70/BD/wKioL1W8erKBfX7cAACYlzJu-R4532.jpg)
[/b]
注:中括号的两边必须要有空格!
例3:使用if条件语句编写MySQL备份脚本
![](http://s3.51cto.com/wyfs02/M00/70/7F/wKiom1W4pu2AhyEGAAJgTTOAO8k463.jpg)
执行语句并查看:
![](http://s3.51cto.com/wyfs02/M01/70/7C/wKioL1W4qNyyibtnAAJGsRp-p8A138.jpg)
注:这里是LAMP的环境,并不是源码包安装的mysql!
如果是源码包安装的,就需要填写完整的路径,不是直接使用mysqldump的命令!
二、循环语句for
语法:
for i(变量) in 字符串do语句1done
注:if可以与for整合使用;但是while可以当做条件来循环,功能更强大!
循环语句for练习
例1:列打印1-9:
![](http://s3.51cto.com/wyfs02/M01/70/C4/wKiom1W9lBOh5NqWAAAo5T6LOnU599.jpg)
![](http://s3.51cto.com/wyfs02/M00/70/C4/wKiom1W9nZaTutlXAABXxYGwTu4750.jpg)
![](http://s3.51cto.com/wyfs02/M02/70/C1/wKioL1W9okqw4uikAABEwuHpaE0309.jpg)
![](http://s3.51cto.com/wyfs02/M02/70/C1/wKioL1W9okqCVNPAAAAwkmzL_kM941.jpg)
行打印1-9:
![](http://s3.51cto.com/wyfs02/M00/70/C4/wKiom1W9o43QhcTFAABIiUCe6og869.jpg)
![](http://s3.51cto.com/wyfs02/M02/70/C4/wKiom1W9o43h9ishAABIj1kmrmQ106.jpg)
![](http://s3.51cto.com/wyfs02/M01/70/C1/wKioL1W9pYLBrniYAABeWeMEyfA007.jpg)
例2:打印3行内容
![](http://s3.51cto.com/wyfs02/M01/70/A7/wKioL1W7FZCi_Ut-AACAtJbW89c469.jpg)
![](http://s3.51cto.com/wyfs02/M01/70/AA/wKiom1W7E5_zlLQTAACAfhvNC7s852.jpg)
![](http://s3.51cto.com/wyfs02/M01/70/A7/wKioL1W7FcWhlCehAABFW0u5Et4573.jpg)
注:表达式:$(( j=j+1 ))=expr $j + 1
)必须用引号,否则会当成命令;
例3:循环IP
![](http://s3.51cto.com/wyfs02/M01/70/C1/wKioL1W9qVmzhbLHAABM3y6-Zc4723.jpg)
![](http://s3.51cto.com/wyfs02/M01/70/C5/wKiom1W9p2WS47j4AADiGcXzQLw625.jpg)
把这个IP服务器列表导入到一个文件中:
sh twenty-four.sh >>ip.txt
让这20台服务器批量运行命令:如查看本地磁盘的使用情况;
ssh -l root 192.168.174.16 'df -h'
出现错误:Address 192.168.174.16 maps to localhost, but this does not map back to the address – POSSIBLE BREAKIN ATTEMPT!
解决办法:修改这个文件:/etc/ssh/ssh_config yes改成no!并重启系统即可!
![](http://s3.51cto.com/wyfs02/M01/70/C2/wKioL1W9thXxmRGWAAQfFpw2Utg181.jpg)
再次执行:ssh -l root 192.168.174.16 'df -h'
![](http://s3.51cto.com/wyfs02/M02/70/C2/wKioL1W9trGjuwi6AADOvby8Or0042.jpg)
做成免密钥的登录方式:ssh-keygen
需求:本地机器ssh登录服务器:无需输入密码,即可查看着20台服务器的磁盘使用情况!单向即可!
步骤1:ssh-keygen -t dsa:将会生成密钥文件和私钥文件id_dsa id_dsa.pub
![](http://s3.51cto.com/wyfs02/M02/70/C9/wKiom1W-G7Oix7f1AAIgPKw4dzk093.jpg)
步骤2:在B上新建目录:mkdir .ssh
将 .pub 文件复制到B机器的 .ssh 目录:
scp /root/.ssh/id_dsa.pub root@192.168.174.17:/root/.ssh/
或者,
ssh-copy-id -i /root/.ssh/id_dsa.pub 192.168.174.17:/root/.ssh/
![](http://s3.51cto.com/wyfs02/M00/70/C6/wKioL1W-IPbSo_gDAADpCeRnxzo751.jpg)
![](http://s3.51cto.com/wyfs02/M00/70/C9/wKiom1W-Hx-B2-6ZAAAt3SwEXAI893.jpg)
步骤3:并将id_dsa.pub的内容添加到~/.ssh/authorized_keys中:
cat id_dsa.pub >> ~/.ssh/authorized_keys
![](http://s3.51cto.com/wyfs02/M02/70/F4/wKioL1XB7h6B3TFJAABsL_BFOqI109.jpg)
步骤4:目录.ssh和文件authorized_keys的权限必须是600
![](http://s3.51cto.com/wyfs02/M01/70/C9/wKiom1W-IKnSdIWPAAC1QBRzsmY147.jpg)
完成这些工作后,用户从本地机器到远程机器的登录就不用密码了!
![](http://s3.51cto.com/wyfs02/M00/70/F7/wKiom1XB7hewWryvAAFg9iAjriE598.jpg)
步骤5:编辑脚本文件:
![](http://s3.51cto.com/wyfs02/M00/70/C9/wKiom1W-JiqBJ2ANAABSP1uCulg435.jpg)
步骤6:把脚本的内容导入到IP.txt文件:
sh twenty-five.sh >>ip.txt
并查看ip.txt的内容:
![](http://s3.51cto.com/wyfs02/M01/70/C6/wKioL1W-KN3R_oybAAA41PsYLMs020.jpg)
步骤7:把这个脚本批量执行:
![](http://s3.51cto.com/wyfs02/M00/70/C6/wKioL1W-KB7TyDB8AAGMoZ1OyUs476.jpg)
例4:还可以利用这个脚本来复制多个文件到多台服务器上:
步骤1:编辑脚本:
![](http://s3.51cto.com/wyfs02/M01/70/C9/wKiom1W-KqGjM2kYAABg-e4LQXI608.jpg)
步骤2:执行脚本:
![](http://s3.51cto.com/wyfs02/M01/70/C6/wKioL1W-LJXjeGCTAARD-oq3FXs780.jpg)
步骤3:查看输出结果!
![](http://s3.51cto.com/wyfs02/M02/70/C6/wKioL1W-LJaDra6dAAIr0MuH86A680.jpg)
2、求和值
![](http://s3.51cto.com/wyfs02/M02/70/C6/wKioL1W-MaOQHtL7AABhRsJmdTY356.jpg)
![](http://s3.51cto.com/wyfs02/M02/70/C9/wKiom1W-L6-yWdEcAAAkpgHf1_Q534.jpg)
3、同时解压多个文件
![](http://s3.51cto.com/wyfs02/M01/70/C6/wKioL1W-Nf7A0CwvAABPoZZc2Q4515.jpg)
![](http://s3.51cto.com/wyfs02/M01/70/C6/wKioL1W-Nf7CN9F8AAA3_P6RbuU076.jpg)
4、同时打包和还原多个文件
gzip格式:把文件打包,以.gz为结尾,并删除原文件,只留下打包过的文件!
![](http://s3.51cto.com/wyfs02/M00/70/C6/wKioL1W-OFmheuudAANp3wM6Ewo895.jpg)
![](http://s3.51cto.com/wyfs02/M00/70/C6/wKioL1W-PXiSBAi0AAOfee9stzE459.jpg)
![](http://s3.51cto.com/wyfs02/M00/70/CA/wKiom1W-O4TS1H_0AAHaPGM3zP0786.jpg)
如何还原批量的.sh文件?
for i in `ls /tmp/`;do tar -xzf /tmp/$i -C /data/shell/;done
![](http://s3.51cto.com/wyfs02/M00/70/D6/wKioL1W_PynjWGg7AAHqBexY9L8921.jpg)
六、循环语句while
语法:
while 条件语句do 语句1 done
练习while
例1:逐行读取某个文件
![](http://s3.51cto.com/wyfs02/M01/70/E5/wKiom1XAiLbzd5UCAAA9dm0QDtg278.jpg)
![](http://s3.51cto.com/wyfs02/M02/70/E2/wKioL1XAiq3QMYKZAACNnVV4UNY853.jpg)
mysql -uroot -p123 discuz </etc.hosts.sql
例2:
当需要把一台服务器上的资源,部署到远端的一台服务器上,需要使用以下脚本:
scp -r /data/app/www1 root@192.168.174.17:/var/www/html
![](http://s3.51cto.com/wyfs02/M01/70/EF/wKioL1XBqtuARwZQAABGxyP3N7o014.jpg)
rsync -aP /data/app/www1 root@192.168.174.17:/var/www/html
当需要把资源服务器上的内容,批量部署到特定的服务器时候,就需要用到以下的脚本:
需求:把192.168.174.16:/data/app/www1,同步到192.168.174.17:/var/www/html
编辑这个脚本:
![](http://s3.51cto.com/wyfs02/M00/70/E5/wKioL1XA0CGxi5hcAAAwe8jwooo336.jpg)
运行脚本:
![](http://s3.51cto.com/wyfs02/M02/70/E8/wKiom1XAzirQpFDBAAB7iqfnmrI275.jpg)
效果:
![](http://s3.51cto.com/wyfs02/M01/70/ED/wKiom1XBhlCBHOeWAABpkUWFfm0372.jpg)
再把带#的一行内容过滤:
![](http://s3.51cto.com/wyfs02/M01/70/E8/wKiom1XAzvXC_9DBAABDvu1nNR0594.jpg)
效果:
![](http://s3.51cto.com/wyfs02/M02/70/E5/wKioL1XA0O3ircjaAABlMUX-u2g243.jpg)
如何分别取出其中的3段内容?
echo /data/app1/www1 root@192.168.174.17 /var/www/html/
![](http://s3.51cto.com/wyfs02/M02/70/F3/wKiom1XBqRmi1zTuAAE8spEt7vU901.jpg)
运行以下脚本:
![](http://s3.51cto.com/wyfs02/M02/70/EF/wKioL1XBqzegJjTPAADD3jpgIjs974.jpg)
![](http://s3.51cto.com/wyfs02/M01/70/EF/wKioL1XBqzfzgm8GAACUycTGz9Q985.jpg)
过滤掉:scp -r root@:/
![](http://s3.51cto.com/wyfs02/M02/70/EF/wKioL1XBqqXw7epgAACH0GQTQcE371.jpg)
这里利用了ip.txt_swp这个临时文件,过滤掉了#那行的内容!
![](http://s3.51cto.com/wyfs02/M02/71/13/wKiom1XEWJ6QxB_xAAEvWRf7u_8017.jpg)
脚本执行的过程如下:
![](http://s3.51cto.com/wyfs02/M02/71/13/wKiom1XEV6bAY8J5AACSexXVgmc680.jpg)
效果如下:
![](http://s3.51cto.com/wyfs02/M01/71/0F/wKioL1XEXTPDLHlLAAB4Ckp94no645.jpg)
![](http://s3.51cto.com/wyfs02/M01/71/13/wKiom1XEWzfCZiYYAACN7iskUcg161.jpg)
七、util循环语句
语法:直到满足条件,才退出。否则执行action
until 条件 doactiondone
例1:条件判断数字
![](http://s3.51cto.com/wyfs02/M02/70/E5/wKioL1XA6MLj8fgHAABEWeTJYxo888.jpg)
![](http://s3.51cto.com/wyfs02/M02/70/E9/wKiom1XA5szR2Y1pAAA1OtRaPD8658.jpg)
本文出自 “柏书兵-系统运维” 博客,转载请与作者联系!
相关文章推荐
- 《一起学》系列9:Linux & shell
- 【Powershell】【性能计数器】基础信息的获取
- 使用Bash Shell对目录中的文件实现递归式拷贝
- 使用Bash Shell获取文件名和目录名的简单方法
- Bash Shell中的select命令简单使用示例
- Git Bash 设置起始文件夹
- shell脚本:简单的执行跟踪
- 希尔排序 ShellSort
- shell下在while循环中使用ssh命令的问题
- 在shell中逐行读取文件的方法
- shell脚本:访问shell脚本的参数
- shell脚本学习知识点(二)
- shell 基础知识
- 系统shell编程学习
- tcl脚本真的比shell脚本解析处理文件效率要高?
- shell学习完结篇----希望你能看到
- shell学习小结
- 解析如何在C语言中调用shell命令的实现方法【转】
- shell编程进阶
- shell学习五十八天----/proc文件系统