for语句
基本格式:
for 变量名 in 条件; do …; done
样例:遍历目录或文件
1
2
3
4
5
6
7
8
9
<code>#!/bin/bash</code>
<code>cd</code> <code>/etc/</code> <code>##脚本中如果查询的目录在多级目录下,首先要进入到目录,或者,直接跟绝对路径</code>
<code>for</code> <code>a </code><code>in</code> <code>`</code><code>ls</code> <code>/etc/</code><code>` </code><code>##遍历目录</code>
<code>do</code>
<code> </code><code>if</code> <code>[ -d $a ] </code><code>##一个一个的去判断是否为目录</code>
<code> </code><code>then</code>
<code> </code><code>ls</code> <code>-d $a </code><code>##如果是目录,就查看下目录内的文件和子目录</code>
<code> </code><code>fi</code>
<code>done</code>
while语句
while 条件;
do … ;
done
样例:实时监测负载发邮件
10
<code>while</code> <code>: </code><code>##:表示永远循环,和true一个意思</code>
<code> </code><code>load=`w|</code><code>head</code> <code>-1|</code><code>awk</code> <code>-F </code><code>'load average: '</code> <code>'{print $2}'</code><code>|</code><code>cut</code> <code>-d. -f1`</code>
<code>if</code> <code>[ $load -gt 10 ]</code>
<code>then</code>
<code> </code><code>top</code><code>|mail -s </code><code>"load is high: $load"</code> <code>[email protected] </code><code>##这里也可以执行python发邮件的脚本</code>
<code>fi</code>
<code>sleep</code> <code>30</code>
break
跳出整个循环,执行循环代码后的指令。
continue
跳过本次循环,进行下一轮循环。
exit
退出整个脚本。
函数
function fun(){ ##定义函数
……
}
fun 1 2 3 ##传入参数,调用函数
变量含义:
$1 : 第一个参数
$2 : 第二个参数
$3 : 第三个参数
$0 : 脚本的本身名称
$# : 传入的参数个数
$@ : 全部参数
样例:查看网卡ip地址
<code>ip() {</code>
<code> </code><code>ifconfig</code> <code>| </code><code>grep</code> <code>-A1 </code><code>"$e"</code> <code>|</code><code>tail</code> <code>-1 | </code><code>awk</code> <code>'{print $2}'</code>
<code>}</code>
<code>read</code> <code>-p </code><code>"Please input the eth name: "</code> <code>e</code>
<code>myip=`ip $e`</code>
<code>echo</code> <code>"$e address is $myip"</code>
数组
定义:
11
<code># a=(1 2 3) ##定义一个数组a并赋值 1 2 3</code>
<code># echo ${a[*]} ##注意输出a的值的格式</code>
<code>1 2 3</code>
<code># echo ${a[1]} ##输出单个a数组中的值</code>
<code>2</code>
<code># echo ${a[2]}</code>
<code>3</code>
<code># echo ${a[0]} ##注意第一个其实是 0</code>
<code>1</code>
<code># echo ${#a[@]} ##获取数组的元素个数</code>
更改:
<code># a[3]=a ##给第三个数组赋值一个a</code>
<code># echo ${a[*]}</code>
<code>1 2 3 a</code>
<code># a[3]=aaa ##修改赋值为aaa</code>
<code>1 2 3 aaa</code>
<code>#echo ${a[@]/5/asd} ##替换</code>
<code>1 2 3 4 asd 6 7 8</code>
删除:
<code># unset a[2] ##删除a数组中第2位的值</code>
<code># unset a ##删除a数组</code>
分片:
<code># a=(`seq 1 8`) ##给a赋值8个数</code>
<code>1 2 3 4 5 6 7 8</code>
<code># echo ${a[@]:3:3} ##从第3个数组开始,截取3个。</code>
<code>4 5 6</code>
<code># echo ${a[@]:0-3:2} ##从倒数第三个开始,取两个数</code>
<code>6 7</code>
<code></code>
本文转自Grodd51CTO博客,原文链接:http://blog.51cto.com/juispan/2064850,如需转载请自行联系原作者