美文网首页
shell编程

shell编程

作者: ___Hello | 来源:发表于2018-09-12 22:59 被阅读0次

    shell编程就是用linux命令编程,是一种解释型语言。
    小例子:

    while true
    do 
    echo "i love u"
    sleep 0.5
    done
    

    基本格式

    代码写在普通文本,常以.sh为后缀

    #!/bin/bash      #表示用哪一种shell解析器来执行demo
    echo "hello shell"
    

    执行shell
    需要文本执行权限

    chmod +x helloworld.sh
    

    执行首先在环境变量里面找
    helloworld.sh 是无法执行的
    ./helloworld.sh 需要制定路径
    sh helloworld.sh 命令sh是在环境变量中,后面默认路径为当前

    基本语法

    变量

    linux shell中变量分为系统变量 自定义变量
    系统变量 可以通过set命令查看

    image.png

    自定义变量
    变量名=变量值

    注意:

    • =等号左右不能有空格
    • 变量值有空格时,需要加引号
    • 双引会变量引用脱意,单引不会脱意
    • 变量只存在当前会话(当前进程)
    unset A      #撤销变量A
    readonly B=2    #声明静态变量B,不能unset    
    

    全局变量
    export C #可把变量 提升为当前shell进程中的全局变量,供shell子进程使用

    例如:
    vim a.sh

    #!/bin/bash
    a=aaaaa
    echo "this is A" $a
    sh b.sh
    

    vim b.sh

    #!/bin/bash
    echo "this is B"  $a
    

    sh a.sh

    this is A aaaaa
    this is B
    

    在b.sh中,直接调用变量a,没出来值

    vim a.sh

    #!/bin/bash
    export a=aaaaa
    echo "this is A" $a
    sh b.sh
    

    sh a.sh

    this is A aaaaa
    this is B aaaaa
    

    因为进程之间隔离,而export只会添加子进程的访问权限


    image.png

    方法2
    vim a.sh

    #!/bin/bash
    a=aaaaa
    echo "this is A" $a
    source ./b.sh
    

    sh a.sh

    this is A aaaaa
    this is B aaaaa
    

    让b.sh在a.sh子进程运行,并没有开新的子进程
    source的简便写法,用.代替
    im a.sh

    #!/bin/bash
    a=aaaaa
    echo "this is A" $a
    . ./b.sh
    

    sh a.sh

    this is A aaaaa
    this is B aaaaa
    

    运算符

    方法1
    expr
    例如:

    expr 3 + 2      #输出5
    a='expr  3 + 2'     #必须有空格
    echo $a     #输出5
    

    方法2
    (())
    例如:

    count=$((2+3))   #不要空格
    echo $count    #输出5
    ((count++))   #输出6
    

    方法3
    $[]
    例如:

    count=$[1+2]    #不要空格
    echo $a    #输出3
    

    流程控制语句(重点)

    格式
    if condition
    then
       statements
    [elif condition
       then statements ..]
    [else
       statements]
    fi

    例如:

    #!/bin/bash
    read -p "please input you name :" NAME   #  read命令从控制台读取数据
    ## printf '%s\n' $NAME
    if [$NAME = root ]
            then 
                    echo "hello ${NAME} , welcome"
           elif [$NAME = shell ]
                    then 
                          echo "hi ${NAME} ,welcome"
           else
                      echo "get out here"
    fi
    

    相关文章

      网友评论

          本文标题:shell编程

          本文链接:https://www.haomeiwen.com/subject/tezbgftx.html