shell脚本之注释,数组,控制语句,函数【shell脚本的学习笔记二】

注释:

以#开始,以行尾为结束,必须一行一行注释


数组:

赋值方式1:数组名=(value0  value1  value2  ...) 注:元素与元素之间以空格隔开,数组下标从0 开始

赋值方式2:arrayname[0]=value0,数组名[1]=value1....

读取单个元素:${arrayname[index]}

读取全部元素:${arrayname[*]}或者${arraname[@]}    

获取数组的长度:${#arrayname[@]}或者${#arrayname[*]}

获取单个元素的大小:${#arrayname[n]}


注:必须用{}将变量和下标并在一起,这样shell才将其当成一个整体,不然shell会将其解释为数组+字符串'[@]‘的组合

#! /bin/bash

array=(1 2 3 4)

echo "$array[*]"      #wrong
echo "${array[*]}"    #right,print all elements
echo "${array[@]}"    #right,print all elements

echo "$array[0]"      #wrong,print first element
echo "${array[0]}"    #right,print first element
echo "length=${#array[*]}"
echo "single size=${#array}"

执行结果:
[root@localhost /]# ./lab2.sh 
first arg=3
second arg=4
inner fun
return value is =5
[root@localhost /]# vi lab2.sh 
[root@localhost /]# ./lab2.sh 
1[*]
1 2 3 4
1 2 3 4
1[0]
1
length=4
single size=1

由结果可看出,数组名单独写时被解释为第一个元素的值,大括号{}的作用是告诉编译器大括号里面的内容是一个整体!


控制语句:

1、for

语法:

for valiable   in  list

do

      shell command

done

注:遍历list中的变量,每次赋值给valiable,list中的变量以空格隔开

测试代码

#! /bin/bash

for i in 1 2 3 4 5 
do
 echo "i=$i"
done
打印结果:



2、while

while condition

do

shell command

done

注:condition为一个表达式时需用中括号[]并起来,并且[]中的每个符号都要以空格隔开

测试代码:

#! /bin/bash

i=0
while [ $i != 5 ]
do
 echo "i=$i"
 let i=$i+1
done
结果:

[root@localhost /]# ./lab2.sh 
i=0
i=1
i=2
i=3
i=4


数字的比较
符号作用英文全称
-eq相等equal
-ne(或!=)不相等not equal
-gt大于greater than
-ge不大于greater tha or equal
-lt小于less than
-le不小于less than or euqal

字符串比较
符号作用
=等于
!=不等于
-z $str空字符串解释为真
-n $str非空解释为真
逻辑运算
运算符作用
!非运算
-o或运算
-a与运算


3、BREAK和CONTINUE:


break:跳出当前级循环,在嵌套级循环中可通过break n跳出n级嵌套。

continue:跳出当前次循环,continue后面也可以跟数字,表示跳出第几次循环



函数:

语法:

[function] function_name(){

     function code

   [ return value ] 

}

注:

1、中括号里面的内容可选

2、参数可用$n在函数内捕获,n表示第几个参数,从1开始,返回值可用$?捕获

3、调用函数时直接写函数名名称即可,不用加括号


测试代码和执行结果:

[root@localhost /]# cat lab2.sh 
#! /bin/bash

function fun(){
echo "first arg=$1"
echo "second arg=$2"
echo "inner fun"
return 5
}
fun 3 4 #调用函数

echo "return value is =$?"  #get return value


[root@localhost /]# ./lab2.sh 
first arg=3
second arg=4
inner fun
return value is =5


部分内容参考:http://c.biancheng.net/cpp/shell/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值