Shell基本语法总结

一、变量
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"

猜你喜欢

转载自blog.csdn.net/perfer258/article/details/79022908
今日推荐