shell学习笔记(二)

3、特殊的值(通配符号的使用)

                            *                                     任意多个字符

                            ?                                    一个字符    ff=c???.sh匹配c开头后面有三个字符的.sh文件

                            []                                       ff=[024]*.sh匹配0,2,4开头.sh结尾的任意文件

                            [^]                                     ff=[^024]*.sh匹配不是0,2,4开头.sh结尾的任意文件

                                          匹配文件名,匹配成功,显示文件名,匹配不成功显示原字符

 

              4、命令替换赋值

                            $(命令)                          b=$(date+%Y)

                            `命令`                                          c=`date+%y`

 

              5、表达式替换

              6、标准输入赋值

                            read -p 提示-t 时间  -n个数  变量  read -p 请输入:-t 10 -n 5 e 输入的时间超过10秒自动返回,长度能超过5个

 

【运算符号与变量相关操作】

              1、变量运算的语法

                            $((算术表达式1,表达式2…))  C支持的全支持,还 **支持小数运算,赋值永远是最后一个表达式和寄存器中的值

                            ((运算表达式1,运算表达式2…))                     ((c=a+b))      \

                            let 元算表达式                                                               letb=a+b            /    效果相同

 

              2shell语法支持的运算符号

                            参考man bash手册帮助文档

 

              3、字符串运算

                            ${}                                     取值

                            ${变量:-}               echo${a:-killer}如果变量anull,则返回-后面的值killer,如果a不为空则返回a的值

${变量:+}              echo${a:+killer}如果变量anull,则返回null,不为null,则返回+后面的值

${变量:=}              echo${a:=killer}如果变量anull,则把=后面的值kill赋值为a再返回a的值,不为空则返回a的值

${变量:?}              echo${a:?killer}如果变量anull,则以?后面的值错误方式显示,变量不为null,则直接返回变量

 

${变量:位置}               echo ${d:3}输出第3-1个位置后面的字符串,包括第3-1个字符                      位置是包含关系

${变量:位置:长度}    echo ${d:3:5}输出第3-1个位置的后面5个字符串,包括第3-1个字符   位置从零开始算

 

${!前缀*}                    echo${!a*}返回以a开头所以的变量名,输出的是变量名字 等同与${!前缀@}

${!数组名[*]}              打印数所以下标等同于${!数组名[@]}              

                            ${#变量名}                  输出变量长度

                            ${变量#word}             返回word开始匹配以后的字符串                         等同于${变量##word}

${变量%word}            去掉字符串指定的开始与结束的某字符

${变量/匹配字符串 /string}           只替换第一个echo ${g/mao/killer}在变量g中寻找mao第一个相同字符并用keller替换之

${变量//匹配字符串/string}           替换所以echo ${g//mao/killer}在变量g中寻找mao所有相同的字符并用keller替换之

 

4、数组

声明:数组名[下标]=值                               a[1]=20  a[2]=30

              declare -a  数组名                         declare -a b=(1 2 3 4)

              数组名=(值1  值2 …值n)         c=(hellword how do you do)

使用:${数组[下标]}                                       echo ${c[1]}

              注意:shell中数组下标可以不连续

 

【测试运算】            [ 0为真,非0即1为假 ]

              1、字符串测试

                            test      A           string               B            判断指定的字符串是否为空

[]                        string1=string2           判断两个字符串string1和string2是否相等

                                                        string1!=string2         判断两个字符串string1和string2是否不相等

                                                        -n string                     判断string是否是非空串

                                                        -z string                      判断string是否是空串       

              2、整数测试

                            test      A           -eq        B           是否相等=

                            [ ]                        -ne                      是否不相等!=

                                                        -gt                      是否大于>

                                                        -lt                        是否小于<

                                                        -ge                      是否大于等于>=

                                                        -le                       是否小于等于<=

 

              3、文件测试

                            test                    -a  file             文件是否存在

                            [ ]                        -b                        文件是否以块文件存在

                                                        -c                        文件是否以字符文件存在

                                                        -e                        同-a的操作

                                                        -s                         文件长度是否大于0或者文件为非空文件

                                                        -L                         文件是否存在且为符号连接

                                                        -u                       文件是否设置了suid

-d                        文件是否以目录存在

-f                         文件存在且为常规文件

                                                        -r                         文件是否存在且可读

-w                       文件是否存在且可写

                                                        -x                        文件是否存在且可执行

 

              逻辑操作符

                            test                    !         A           非

                            [ ]          A           -a          B           与        

                                                        -o                        或

注意:$ [ _"$a"_= _"$b" _]               test  "$a"_!=_"$b"

                                          当进行条件测试时下划线_处必须都是空格

 

【流程控制】

              1、if语句


 

                                          if  条件测试

then

                                                        语句

                             /*  elif 条件测试

then

                                                        语句

                                          else

                                                        语句  */可选

                                          fi

 

 

 

              掌握重点:条件测试

                            条件测试1: 命令的执行结果

                            条件测试2:算术关系表达式

                            条件测试3:逻辑测试

                            [ ]         -a 表示逻辑and                  -o 表示逻辑or

                            [[ ]]      -a 表示文件存在测试        -o 选项测试


 

2、case语句

              case A  in              //A变量

              value1)

                            语句1

                            语句n;;     //;;表示当前value结束

              value  n)

                            语句1

                            语句n;;

               *)                                    //以上都不是则

                            语句1

                            语句n;;

              esac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值