Shell Scripts基本知识

变量:    
    变量就是可变化的量,有名称的内存空间,shell 中把变量默认为 字符型

命名规则:
         1.只能包含字母、数字和下划线,并且不能以数字开头
         2.不能与关键字冲突
         3.尽量做到见名知义

引号:
     单引号:'        强引用
     双引号:"        弱引用 -- 可以实现变量替换      eg:  echo   $HOSTNAME "
     反引号: `        命令替换   <==>  $(command)    eg:  echo   " hello everone `ls  /tmp`"

变量引用:
    $VAR_NAME
    ${VAR_NAME}
    set VAR_NAME=value
    unset VAR_NAME
   
变量事先声明:
  declare   [options]   VAR_NAME
       options:
           -i : 整形                                  eg:  declare  -i   SUM=0
           -x :环境变量
           -a :数组
           -r :只读变量,值不能改变并且不能撤消
           
命令行展开:
       ~:用户家目录
       ~USERNAME : 指定用户的家目录
     {}:类似多项式展开     eg:   #  mkdir  -p    /tmp/{lcok,date,kill/{fuck,this}}
     
变量的种类:
    环境变量:  对当前shell及其子shell都有效   
            设定:    declaer   -x  VAR_NAME=value
                      expore   VAR_NAME=value
            取消:    unset  VAR-NAME
            显示环境变量:  export
                           printenv
                                                                                      
    本地变量(局部变量):    作用域为当前shell(对父shell和子shell无效)
                              local NAME=....

    特殊变量:
          $? :引用上一条命令的执行状态返回值
               0 :成功
               1-255:失败,1 ,2,127 --&gt;系统预留
                          
          readonly  :设定只读变量        eg: # readmonly  NAME=jerry
                   
    位置变量:   
       位置变量用于引用传递过来的参数: ${1} ,${2} ...${11}
              
bash如何实现命令展开:
      1.切片 :以space ,tab , enter分隔(词法分析)
      2.别名替换:命令行展开 ,$ ,{} ,()
      3. 可能需要重复进行1和2
      4. 实现重定向: &gt; ,&gt;&gt;  , <
      5. 执行命令
   阻止展开:
       转义符:\ 
       单引号:' '               
       ;:分号能实现语句的分割
     
命令的逻辑关系:
    与关系 : 双目操作符
        & :位与      0011011    01010101
        && :逻辑与       [ $A  -eq  0 ]  &&  echo "Hello body !"
      或关系 :  | : 位或
                 || : 逻辑或
      非关系 :            !                       
 
条件测试:
      test  expression                        
      [ expression ]            -->  expression前后有空格  
      [[ expession ]]           -->;关键字
                   
  条件测试类型:
     整数比较:    [   ]
          双目操作: num1  操作符 num2
              -eq : =     eg:  [ 2 -eq 3 ]  ,[[ 2 -eq 3 ]]
              -gt : &gt;   大于
              -lt  : <    小于
              -ge : >=
              -le : <=
              -ne : !=
     字符串测试 :  [[   ]]     需要用 -->双中括号   eg: [[ string1 <  string2 ]]
                  >
                  <
                  >=
                  <=
                  !=
                  == 
       单目: 
             [ -z  "abc" ]  :测试string是否为空,为空则真,否则为假 
             [  -n string  ]:            为空则假,否则为真
    文件测试 : 
             -e  /path/to    : 测试文件是否存在         eg:    [ -e  /etc/inittab ]
             -f  /path/to   : 为普通文件
             -d  /path/to   :  测试目录是否存在
             -r             :读权限
             -w           :写权限
             -x            :可执行权限
算术运算:
        $(( expession ))
        $[expression]
     常用方法:
          1.赋值给变量
          2.使用echo 回显
                                                                      SUM=$(($A+$B))
let VAR_NAME=NUM1 OP NUM2
                                    echo VAR_NAME
                    expr num1 op num2         
                            + :
                            -
                            *
                            /
                            %
  连接两个条件:
        -a :与关系
        -o : 或关系
       !  : 非关系
 
 
  if :
       if   测试条件 ;then
             statement1;
                   ...
             else    
              statement2;
                   ...
             fi
             
             eg:     if  [ SUM  -eq  0 ] ; then
                                                                     echo "hello  world !"
                                                     else     echo "No,sorry!"
                                                     fi
循环执行:
for
             for    变量  in  列表; do
                            statement1
                            statemetn2
                                ...
             done

         列表表示法:
                    { }   :eg -->{1..100}  --&gt; 1到100
                                   `seq 1 100`  :   --&gt;eg:偶数 `seq 2 2 100`  可以控制步进
                                   `COMMAND`   : 元素分割符是空格或换行符  eg: `ls /var`
              
while
             while  条件 ; do
                           循环体
                                ...
            done
                                    eg: while read LINE ;do     按行读取文件内容进行处理
                                            ...
                                            ...
                                        done < /etc/passwd
           
until 
             until  条件 ; do
                        循环体
                                ...
            done
case 
            case  变量  in 
                        取值1)
                                        语句
                                        ;;
                        取值2) 
                                        语句
                                        ;;
                             *)
                                        语句
                                        ;;
           esac
          
 
break :停止循环
continue:提前结束当前循环,而后进入下一次循环

    RETVAL=$?
        位置变量:
            # ./name.sh     A   B   C   D
                 $0        $1    $2   $3 $4
 
如何与用户交互:
                read  VAR_NAME
                        -p  : " "                eg: read -p "Please input your name :"  NAME
                        -t    :
bash命令的选项:
                -n :用于测试脚本的语法错误
                -x :调试执行,显示脚本调试执行过程中的详细过程
                -v  在运行 sccript 前,先将 scripts 的内容输出到屏幕上
            
   ++ :VAR++  ,++VAR
                        VAR++ : 先引用 ,后自加        eg:        let VAR++    &lt;-->    VAR=$[ $VAR+1 ]
                        ++VAR : 先自加,后引用
                -- :    VAR--  ,--VAR
                        +=  --&gt; eg:     let SUM+=$I  <-->  SUM=$(($SUM+$I))
                        -=
                        *=
                        /=
    
   指定退出脚本:
                状态返回值:0  1--&gt;255
            exit
        随机数:RANDOM
    
 
  输出菜单:  --&gt;cat
        #  cat &lt;&lt;EOF
        1.Please input your name:
        2.Please input your telephone number:
        3.Please input your address:
        4.Quit
        EOF
 
 
function 
              
bash 中定义函数的两种方法:
             
  1. function  FUNC_NAME{
                        body
                        }
              
2. FUNC_NAME() {
                            body;
                            }
    
   函数的返回值:是函数调用时所执行的函数体中的最后一条语句的状态返回值;
        自定义函数返回值:  return #

你可能感兴趣的:(数字,下划线,知识,的)