一、变量
1、变量名前没有变量类型的限制
2、‘=’之前不能有空格
3、变量的使用是在变量名之前加上$
二、字符串
1、字符串定义可以使用单引号、双引号或者不使用引号。
使用单引号不能进行转义,单引号内的所有字符原样输出;
双引号内可以有变量,双引号内可以进行转义, 如"$var is a variable/n"(使用echo -e 让字符串中的转义字符生效)
2、字符串拼接。直接在变量名(字符串)的后面加上一个带引号的字符串即可,引号不是必需的但最好加上引号,增加代码的可读性,如 $var1" is a variable"
3、获取字符串的长度:${#string}。
4、截取字符串。从字符串第start个字符开始截取count个字符:${string:start:count},省略count将从start截取到字符串的结尾
5、查找字符在字符串中的位置,使用`expt index "str" ch`结果是<字符的下标加1>。如string="hello"; `expr index "string" e`; #结果是2
三、数组
1、bash支持一维数组(不支持多维数组),并且没有限定数组的大小,数组的下标也是从零开始。
2、定义的一般形式为: array_name=(value1 value2 value3 ...),注意是以空格分隔各个数组元素
3、使用${array[index]}来获取下标为index的数组元素
4、使用${array[*]}或者${array[@]}来获取所有的数组元素,使用${array[*]:n}获取除前n个元素之外的所有元素(n=0是除去所有元素)
四、删除变量或数组元素
unset var。 如 unset array[0]
五、if语句
1、语法结构是if 条件; then 行为; elif 条件; then 行为; fi (elif不是必需的)
2、if语句后面常跟test条件。如if test $var1 -gt $var2
3、if后面如果跟的是[],要注意在括号的开始和结尾都要有空格才行。如 if [ $var1 -lt $var2 ]
4、如果在if条件中有逻辑运算符(&&或||),则需要使用双重方括号才行。如 if [[ $var1 -gt $var2 && $var1 -lt $var3 ]]; 也可以将(&&和||)换成对应的(-a和-o),这样就不必使用双重方括号了。
六、算数运算
方法一、使用`expr`表达式
例如 n=`expr 2 + 3`
n=`expr $var1 \* $var2`
注意:1、变量名与运算符之间要有空格
2、乘法运算符(*)前面要用转义符(\)进行转义
方法二、使用$[]方法
例如 n=$[$var1*$var2]
备注:1、使用这种方法不必在变量与运算符之间添加空格
2、乘法运算符之前不必添加转义符
3、方括号与变量之间不必添加空格
七、函数
1、定义
关键字function表示定义一个函数,可以省略,其后是函数名,有时函数名后可以跟一个括号,符号“{”表示函数执行命令的入口,该符号也可以在函数名那一行,“}”表示函数体的结束,两个大括号之间是函数体。
例如
function 函数名() {
语句
[return]
}
2、函数调用
函数可以通过位置变量传递参数。例如函数名 参数1 参数2 参数3 参数4。当函数执行时,$1 对应 参数1,其他依次类推。
3、函数返回值
函数中的关键字“return”可以放到函数体的任意位置,通常用于返回某些值,Shell在执行到return之后,就停止往下执行,返回到主程序的调用行,return的返回值只能是0~256之间的一个整数,返回值将保存到变量“$?”中。
例子
#!/bin/bash
function abc() {
RESULT=`expr $1 \% 2` #表示取余数
if [ $RESULT –ne 0 ] ; then
return 0
else
return 1
fi
}
echo "Please enter a number who can devide by 2"
read N
abc $N
case $? in
0)
echo "yes ,it is”
;;
1)
echo “no ,it isn’t”
;;
esac
4、另一个文件中函数的载入
如果函数在另外一个文件中,我们使用source命令来调用。
比如 show 函数写在了function.sh里面了,我们就可以用 source 命令source function.sh。
5、函数的删除
unset –f 函数名
6、函数的变量作用域
默认情况下,变量具有全局作用域,如果想把它设置为局部作用域,可以在其前加入local。例如:local a="hello"
1、变量名前没有变量类型的限制
2、‘=’之前不能有空格
3、变量的使用是在变量名之前加上$
二、字符串
1、字符串定义可以使用单引号、双引号或者不使用引号。
使用单引号不能进行转义,单引号内的所有字符原样输出;
双引号内可以有变量,双引号内可以进行转义, 如"$var is a variable/n"(使用echo -e 让字符串中的转义字符生效)
2、字符串拼接。直接在变量名(字符串)的后面加上一个带引号的字符串即可,引号不是必需的但最好加上引号,增加代码的可读性,如 $var1" is a variable"
3、获取字符串的长度:${#string}。
4、截取字符串。从字符串第start个字符开始截取count个字符:${string:start:count},省略count将从start截取到字符串的结尾
5、查找字符在字符串中的位置,使用`expt index "str" ch`结果是<字符的下标加1>。如string="hello"; `expr index "string" e`; #结果是2
三、数组
1、bash支持一维数组(不支持多维数组),并且没有限定数组的大小,数组的下标也是从零开始。
2、定义的一般形式为: array_name=(value1 value2 value3 ...),注意是以空格分隔各个数组元素
3、使用${array[index]}来获取下标为index的数组元素
4、使用${array[*]}或者${array[@]}来获取所有的数组元素,使用${array[*]:n}获取除前n个元素之外的所有元素(n=0是除去所有元素)
四、删除变量或数组元素
unset var。 如 unset array[0]
五、if语句
1、语法结构是if 条件; then 行为; elif 条件; then 行为; fi (elif不是必需的)
2、if语句后面常跟test条件。如if test $var1 -gt $var2
3、if后面如果跟的是[],要注意在括号的开始和结尾都要有空格才行。如 if [ $var1 -lt $var2 ]
4、如果在if条件中有逻辑运算符(&&或||),则需要使用双重方括号才行。如 if [[ $var1 -gt $var2 && $var1 -lt $var3 ]]; 也可以将(&&和||)换成对应的(-a和-o),这样就不必使用双重方括号了。
六、算数运算
方法一、使用`expr`表达式
例如 n=`expr 2 + 3`
n=`expr $var1 \* $var2`
注意:1、变量名与运算符之间要有空格
2、乘法运算符(*)前面要用转义符(\)进行转义
方法二、使用$[]方法
例如 n=$[$var1*$var2]
备注:1、使用这种方法不必在变量与运算符之间添加空格
2、乘法运算符之前不必添加转义符
3、方括号与变量之间不必添加空格
七、函数
1、定义
关键字function表示定义一个函数,可以省略,其后是函数名,有时函数名后可以跟一个括号,符号“{”表示函数执行命令的入口,该符号也可以在函数名那一行,“}”表示函数体的结束,两个大括号之间是函数体。
例如
function 函数名() {
语句
[return]
}
2、函数调用
函数可以通过位置变量传递参数。例如函数名 参数1 参数2 参数3 参数4。当函数执行时,$1 对应 参数1,其他依次类推。
3、函数返回值
函数中的关键字“return”可以放到函数体的任意位置,通常用于返回某些值,Shell在执行到return之后,就停止往下执行,返回到主程序的调用行,return的返回值只能是0~256之间的一个整数,返回值将保存到变量“$?”中。
例子
#!/bin/bash
function abc() {
RESULT=`expr $1 \% 2` #表示取余数
if [ $RESULT –ne 0 ] ; then
return 0
else
return 1
fi
}
echo "Please enter a number who can devide by 2"
read N
abc $N
case $? in
0)
echo "yes ,it is”
;;
1)
echo “no ,it isn’t”
;;
esac
4、另一个文件中函数的载入
如果函数在另外一个文件中,我们使用source命令来调用。
比如 show 函数写在了function.sh里面了,我们就可以用 source 命令source function.sh。
5、函数的删除
unset –f 函数名
6、函数的变量作用域
默认情况下,变量具有全局作用域,如果想把它设置为局部作用域,可以在其前加入local。例如:local a="hello"