Shell编程的基本知识---待完善



                Shell 编程
                    在bash中变量是没有类型之分的。
                    1、定义变量
                        aa=abc123    定义变量并赋值abc123
                        aa=          定义空变量或者清空变量aa,但变量还存在----如果只是aa 没有等于号,那么执行的时候会报错,定义空变量必须是aa=
                        
                    2、变量的分类:局部变量和环境变量
                        局部变量:的作用域被限定在创建它们的shell中
                        环境变量:通常又称全局变量,以区别于局部变量,通常,环境变量应该大写,环境变量是已经用export内置命令导出的变量
                        
                        
                    3、局部变量:
                        格式:
                            变量名=值
                            declare 变量名=值   declare 是内置命令:声明
                            
                    4、环境变量
                        格式:
                            export 变量=值
                            declare -x 变量=值
                            
                        环境变量按生存周期可分为:
                            1. 永久的:需要修改配置文件,export变量永久生效。
                            2. 临时的:使用export命令行声明即可,变量在关闭shell时失效。
                            
            脚本的编写:
                #!/bin/bash         #这句话是:约定标记,用于指定使用什么解释器。
                .
                .
                .
                编写完脚本之后不能运行,需要先执行 chomd + ./脚本名.sh
                执行完之后才可以执行。
                
                5、对变量的基本操作: 定义一个变量name :name=zhangsan
                    ${name} $name  两种方式引用name变量。
                    ${#name} 是算出name的长度
                    
                    ${name:1:4}  用于变量的截取——hang 从第二位开始长度为4
                    
                    字符的操作:
                        #、## 表示从左边开始删除。一个 # 表示从左边删除到第一个指定的字符;两个 # 表示从左边删除到最后一个指定的字符。

                        %、%% 表示从右边开始删除。一个 % 表示从右边删除到第一个指定的字符;两个 % 表示从左边删除到最后一个指定的字符
                    样例:${name#*a} ---删除掉从左边开始到第一个a的字符---:ngsan
                          ${name##*a}  ----从左边开始到最后一个字符:n
                         *代表要删除的内容,如果是#那么*就在左侧,如果是%那么就在右侧。
                    
                6、shell 数组:
                    1、定义数组:用括号来表示数组,数组元素用"空格"符号分割开;
                        如:name=(a b c d s)
                    2、引用子元素:
                        ${name[0]} -a
                    3、所有元素
                        ${name[@]}或者${name[*]} a b c d s
                    4、数组长度
                        ${#name[@]} ---5
                    5、遍历:
                        for循环遍历:a=(1 2 "3" "4" 6 7)
                            for i in ${a[@]}
                            do
                                ${i}
                            done
                            
                        while循环遍历:
                            定义一个变量: j=0
                            
                             while [${j} lt ${#a[@]}]
                             do
                                echo ${a[${j}]}
                                let j++            --这一步可以有多种写法:let "j++"  /let j+=1 /j=$[${j}+1]
                             done
                7、参数传递:
                    1、向脚本执行文件传递参数:
                        ./test.sh a b 1
                        分别向test.sh执行文件传递了三个参数,a b 1。0位代表文件名
                    2、输出参数的个数:
                        $#  ----4
                        $1  ----a
                        $2  ----b
                    3、输出所有的参数:
                        $@  -----"a" "b" "c"
                    
                    

                8、运算符:
                    1、基本运算符:
                        expr :是一款表达式计算工具,使用它能完成表达式的求值操作
                        value=`expr 2 + 2`
                        echo ${value}  ----4  注意:2和+必须有空格  `不是单引号而是反引号。
                        
                        乘法相对来说有点特殊: `expr ${a} \* ${b}`  ----->a*b
                        
                        条件表达式要放在方括号之间,并且要有空格,例如:必须写成 [ $a == $b ]。判断a是否等于b
                    2、关系运算
                        [ $a -eq $b ]  ==
                        [ $a -ne $b ]  !=
                        [ $a -lt $b ]    <
                        [ $a -gt $b ]    >
                        [ $a -ge $b ]   >=
                        [ $a -le $b ]    <=

                    3、布尔运算
                        !    [ !false ] 非运算 -->true
                        -o   或运算
                        -a   与运算
                        
                    4、逻辑运算
                        [[ $a && $b ]]  与
                        [[ $a || $b ]]  或
                        
                    5、字符串的一些基本操作
                        [ $a = $b ]  =
                        [ $a != $b ] !=
                        [ -z $a ]  判断a长度是否零 为0 返回true
                        [ -n $a ]  长度不为0返回true
                        [ $a ] 判断a是否为空,不为空返回为true
                        
                    6、文件测试运算符。
                        。。。。。。
                        
                9、read命令
                    #!/bin/sh
                    read name     //read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给这个shell 变量name
                    echo "$name It is a test"
                    
                10、流程控制:
                    
                        
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                   

猜你喜欢

转载自blog.csdn.net/try_harder_every_day/article/details/79035480
今日推荐