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

时间:2022-09-14 15:35:47

注释:

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


数组:

赋值方式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}"

执行结果:
shell脚本之注释,数组,控制语句,函数【shell脚本的学习笔记二】[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

注:遍shell脚本之注释,数组,控制语句,函数【shell脚本的学习笔记二】历list中的变量,每次赋值给valiable,list中的变量以空格隔开

测试代码

#! /bin/bash

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

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


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
结果:

shell脚本之注释,数组,控制语句,函数【shell脚本的学习笔记二】[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/