shell编程基础

来源:互联网 发布:四川大学网络空间学院 编辑:程序博客网 时间:2024/05/20 21:58

····shell变量

    定义变量        variableName="value"    使用变量        echo ${variableName}    只读变量        readonly variableName    删除变量        unset variableName    变量类型        1)局部变量            仅仅当前shell自己使用。        2)环境变量            全部shell都能使用。        3)shell变量            脚本中设置的变量,脚本运行结束就消失。

····shell特殊变量

    $0 当前脚本名    $n 传递给脚本或者函数的第n个参数。    $# 传递给脚本或者函数的参数个数。    $*     传递给脚本或函数的所有参数。    $@     传递给脚本或函数的所有参数。被双引号(" ")包含时,传给函数的参数作为整体 “aa bb cc dd”。    $? 上个命令的执行状态。    $$    当前shell的进程id。

····Shell替换

    转义字符        echo -e 表示对转义字符进行替换        以下转移命令:            \\  反斜杠            \a  警报,响铃            \b  退格(删除键)            \f  换页(FF),将当前位置移到下页开头            \n  换行            \r  回车            \t  水平制表符(tab键)             \v  垂直制表符    命令替换        variableName=`command`  使用反引号    shell变量删除        从前匹配删除        path=123456789123456789        echo ${path#1*3} 输出结果 456789123456789        echo ${path#1*3} 输出结果 456789        从后匹配删除        filename=file.bak.bak        echo ${filename%.bak} 输出结果 file.bak        echo ${filename%%.bak} 输出结果 file    shell变量取代        new=abcabcabc        echo ${new/abc/ABC} 输出结果 ABCabcabc        echo ${new//abc/ABC} 输出结果 ABCABCABC    Shell变量替换    var=${str-expr}         str未声明  str为空       str非空        str=        str=        str=zww        var=expr    var=        var=zwwvar1=${str1:-expr}                   str1未声明 str1为空  str1非空         str1=       str1=       str1=zww        var1=expr   var1=expr   var1=zwwvar2=${str2+expr}         str2未声明 str2为空  str2为空         str2=       str2=       str2=        var2=       var2=expr   var2=exprvar3=${str3:+expr}         str3未声明  str3为空 str3非空         str3=       str3=       str3=zww        var3=       var3=       var3=exprvar4=${str4=expr}         str4未声明  str4为空 str4非空        str4=expr   str4=       str4=zww        var4=expr   var4=       var4=zwwvar5=${str5:=expr}         str5未声明  str5为空     str5非空        str5=expr   str5=expr   str5=zww        var5=expr   var5=expr   var5=zwwvar6=${str6?expr}        str6未声明          ./zww.sh: line 75: str6: expr        str6为空          ./zww.sh: line 77: str6: expr        str6非空          str6=zww        var6=zwwvar7=${str7:?expr}         str7未声明          ./zww.sh: line 84: str7: expr        str7为空          ./zww.sh: line 87: str7: expr        str7非空          str7=zww        var7=zww

····Shell运算符

    数字运算符        expr 4 + 4  加法        expr 4 - 2  减法        expr 4 \* 4 乘法        expr 8 / 2  除法        expr 8 % 2  取余    关系运算符        [ $a == $b ]  [ $a -eq $b ] 是否相等        [ $a != $b ]  [ $a -ne $b ] 是否不等        [ $a -le $b ]  是否小于        [ $a -lt $b ]  是否小于等于        [ $a -ge $b ]  是否大于        [ $a -gt $b ]  是否大于等于    布尔运算符        [ ! false ] 返回 true$a -lt 20 -o $b -gt 100 ] 返回 true$a -lt 20 -a $b -gt 100 ] 返回 false。    字符串运算符        [ $a = $b ] 两字符串相同,为真。        [ $a != $b ] 两字符串不同,为真。        [ -z $a ] 字符串为空时,为真。        [ str ] 字符串非空时,为真。

····Shel字符串

    单引号 单引号里的任何字符都会原样输出    双引号 双引号里可以有变量    获取字符串长度        echo ${#string}    提取子字符串        echo ${string:1:4}    字符串删除        path=123456789123456789        echo ${path#1*3} 输出结果 456789123456789        echo ${path#1*3} 输出结果 456789        filename=file.bak.bak        echo ${filename%.bak} 输出结果 file.bak        echo ${filename%%.bak} 输出结果 file    字符串取代        new=abcabcabc        echo ${new/abc/ABC} 输出结果 ABCabcabc        echo ${new//abc/ABC} 输出结果 ABCABCABC

····Shell数组

    数组的定义        array_name=(value0 value1 value2 value3)    还可以单独定义数组的各个分量:        array_name[0]=value0        array_name[1]=value1        array_name[2]=value2    读取valuen=${array_name[2]}    使用@ 或 * 可以获取数组中的所有元素        ${array_name[*]}        ${array_name[@]}    获取数组的长度        # 取得数组元素的个数        length=${#array_name[@]}        # 或者        length=${#array_name[*]}        # 取得数组单个元素的长度        lengthn=${#array_name[n]}