shell编程基础

····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=zww
var1=${str1:-expr}           
        str1未声明 str1为空  str1非空 
        str1=       str1=       str1=zww
        var1=expr   var1=expr   var1=zww
var2=${str2+expr} 
        str2未声明 str2为空  str2为空 
        str2=       str2=       str2=
        var2=       var2=expr   var2=expr
var3=${str3:+expr} 
        str3未声明  str3为空 str3非空 
        str3=       str3=       str3=zww
        var3=       var3=       var3=expr
var4=${str4=expr} 
        str4未声明  str4为空 str4非空
        str4=expr   str4=       str4=zww
        var4=expr   var4=       var4=zww
var5=${str5:=expr} 
        str5未声明  str5为空     str5非空
        str5=expr   str5=expr   str5=zww
        var5=expr   var5=expr   var5=zww
var6=${str6?expr}
        str6未声明  
        ./zww.sh: line 75: str6: expr
        str6为空  
        ./zww.sh: line 77: str6: expr
        str6非空  
        str6=zww
        var6=zww
var7=${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]}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值