注释:
以#开始,以行尾为结束,必须一行一行注释
数组:
赋值方式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/