码迷,mamicode.com
首页 > 系统相关 > 详细

Shell基础语法(三)

时间:2018-01-25 00:09:02      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:一个   表示   address   nbsp   负载   awk   pre   set   调用函数   

for语句

基本格式:

for 变量名 in 条件; do …; done


样例:遍历目录或文件

#!/bin/bash
cd /etc/                 ##脚本中如果查询的目录在多级目录下,首先要进入到目录,或者,直接跟绝对路径
for a in `ls /etc/`      ##遍历目录
do
    if [ -d $a ]         ##一个一个的去判断是否为目录
    then
    ls -d $a             ##如果是目录,就查看下目录内的文件和子目录
    fi
done


while语句

基本格式:

while 条件; 

do … ;

done


样例:实时监测负载发邮件

#!/bin/bash
while :         ##:表示永远循环,和true一个意思
do
    load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1`
if [ $load -gt 10 ]
then
    top|mail -s "load is high: $load" abcd@123.com  ##这里也可以执行python发邮件的脚本
fi
sleep 30
done


break

跳出整个循环,执行循环代码后的指令。


continue

跳过本次循环,进行下一轮循环。


exit

退出整个脚本。


函数

基本格式:

function fun(){    ##定义函数

……         

}

fun 1 2 3          ##传入参数,调用函数


变量含义:

$1 : 第一个参数

$2 : 第二个参数

$3 : 第三个参数

$0 : 脚本的本身名称

$# : 传入的参数个数

$@ : 全部参数


样例:查看网卡ip地址

#!/bin/bash
ip() {
	ifconfig | grep -A1 "$e" |tail -1 | awk '{print $2}'
}
read -p "Please input the eth name: " e
myip=`ip $e`
echo "$e address is $myip"


数组

定义:

# a=(1 2 3)          ##定义一个数组a并赋值 1 2 3
# echo ${a[*]}       ##注意输出a的值的格式
1 2 3
# echo ${a[1]}       ##输出单个a数组中的值
2
# echo ${a[2]}
3
# echo ${a[0]}       ##注意第一个其实是 0
1
# echo ${#a[@]}      ##获取数组的元素个数
3

更改:

# a[3]=a         ##给第三个数组赋值一个a
# echo ${a[*]}
1 2 3 a
# a[3]=aaa       ##修改赋值为aaa
# echo ${a[*]}
1 2 3 aaa
#echo ${a[@]/5/asd}  ##替换
1 2 3 4 asd 6 7 8

删除:

# unset a[2]         ##删除a数组中第2位的值
# unset a            ##删除a数组

分片:

# a=(`seq 1 8`)          ##给a赋值8个数
# echo ${a[*]}
1 2 3 4 5 6 7 8
# echo ${a[@]:3:3}       ##从第3个数组开始,截取3个。
4 5 6
# echo ${a[@]:0-3:2}     ##从倒数第三个开始,取两个数
6 7

Shell基础语法(三)

标签:一个   表示   address   nbsp   负载   awk   pre   set   调用函数   

原文地址:http://blog.51cto.com/juispan/2064850

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!