shell1.8-2.2

回复 收藏

1.8 for循环

常用循环有for 和 while ,而for是只用的最多的。

seq是产生序列的命令

seq 1 10        打印1到10的数字。

seq 1 2 10      打印1到10的数字,并且每两个打印一次。

seq 01  10      打印指定的位数的数列,安装最长的生成。

seq 01 -1 10    打印从10到1的数列

seq -w 1  10    是做从一到十排序。

例如1:

#vim for1.sh

内容如下:

#!/bin/bash

for i in 'seq 1  10';

do

保持退出;运行:

#sh for1.sh

例如2:

#vim for2.sh

内容如下:

#!/bin/bash

#定义变量$i为循环

for i in {1..10}

do

 echo $i

done

保持退出;运行:

#sh for2.sh

例1和例2是一样的结果,其中i是自定义的变量。

例如3:

#vim for3.sh

内容如下:

#!/bin/bash

#输出变量求和

#想定义sum变量,sum=0

sum

for i in {1..10}

do

  sum=$[$sum+$i]

done

 echo ''$sum      

#echo 是打印变量$sum的值

保持退出;运行:

#sh for3.sh

例如4:

将/etc/passwd的内容写到1.txt中,将1.txt的没以后作为运行条件,

cat /etc/passwd > 1.txt

#vim for4.sh

内容如下:

#!/bin/bash

for l in 'cat 1.txt'

do

 echo $l

done

保持退出;运行:

#sh for4.sh

例4的结果可以到显示和我们cat看到的不一样,因为一行中有空格会按两次输出。这个可以自己编写一个小文档自己练习一下,这里就不再做做举例了。

例如:

做分发的任务,将ip写到一个文档ip.txt中。

可以在done前面加入要执行的命令,

#for ip in 'cat ip.txt'; do echo $ip;ssh $ip "w"; done

循环一个文件夹

#for file in 'ls'; do echo $file; done

查看文件夹大小

#for file in 'ls'; do echo $file; du -sh $file; done

1.9 while循环

while大多使用情况是死循环,用于监控,

格式:

#!/bin/bash

while

 do

执行的任务

done

例如1:

#vim while1

内容如下:

#!/bin/bash

#每隔三秒输出一个结果":"表示永久针

while :

do

  date +%T

  sleep 3

done

保存退出;运行

sh while1.sh

例如2:

#vim while2

内容如下:

#!/bin/bash

n=0

while [ $n -le 10 ]

do

echo $n

n=$[$n+1]

done

保持退出;运行

这里个例子的可以把n的值换成文件或者分区大小,while里面的判断条件可以换成达到多少的值,do后面的可以改成要执行的任务。

while交互有点疑问,没有写例如:需要自己学习一下

2.0 shell中断继续退出

控制循环的关键词:break  continue  exit

例如1:

vim for5.sh

内容如下:

#!/bin/bash

#

for i in 'seq 1  10'

do 

  echo $i

  if [ $i -eq 4 ]

  then

       break

  fi

  echo $i

  echo "这个shell还存活。"

done

保持退出;运行sh -x for5.sh

在例如5中将break分别替换成continue和exit。查看结果

break   是接受整个for循环

continue是接触本次运行,继续往下执行

exit    是直接退出shell任务

 

2.1 shell函数

函数里面的还是可以在外面使用,当在定义函数是我们在函数前面加local 就成了局部变量。

对比下面的例如1和例如2。 其中:function可以省略,function是局部的意思,

例如1:

vim fun1.sh

内容如下:

#!/bin/bash

function mysum() {

     sum =$[$1+$2]

     echo $sum

}

a=1

b=2

mysum $a $b

#调用{ }内的变量

echo $sum

保持退出;运行

例如1:

vim fun2.sh

内容如下:

#!/bin/bash

function mysum() {

     local sum =$[$1+$2]

     echo $sum

}

a=1

b=2

mysum $a $b

#调用{ }内的变量

echo $sum

保持退出;运行

2.2 shell数组

数组的定义和赋值

赋值括号内的是数组:a=(1 2 3 4)

2016-09-20 16:58 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: