美文网首页
Shell Script(未完)

Shell Script(未完)

作者: sunpy | 来源:发表于2019-01-09 00:13 被阅读5次

    什么是Shell

    Shell 是一种脚本语言,任何代码最终都要被“翻译”成二进制的形式才能在计算机中执行。Shell作为一种解释型语言,边执行边翻译,不会像C++那样生成可执行文件。而Shell本身无需编译,执行运行源码。

    HelloWorld

    使用touch命令创建sunpy.sh或者touch命令随便创建一个文件分配一个可执行权限也可以

    echo "HelloWorld!"
    
    helloworld.png

    变量

    1. 定义变量
      命名规范:字母、数字、下划线
    variable=value
    variable='value'
    variable="value"
    

    说明:单引号的变量里面的值是什么就输出什么,而双引号的变量里面的值会先解析其中的变量。

    1. 修改变量
      重新赋值变量即可
    name=sunpy
    name=sunpy1
    
    1. 将命令结果赋值给变量(注意:下面是圆括号)
    variable=`command`
    variable=$(command)
    

    例子:

    # sunpy.sh
    name=$(cat sunpy)
    echo "hello, $name"
    
    #sunpy
    echo "HelloWorld"
    

    结果:

    [root@izuf6ea4rfo45y44oj74jhz shell_program]# sh sunpy.sh
    hello, echo "HelloWorld"
    
    1. 只读变量
    name="456"
    readonly name
    name="123"
    

    结果:sunpy.sh: line 3: name: readonly variable

    1. 删除变量
    name="123"
    unset name
    

    传参

    1. 脚本传参
    # sunpy.sh
    echo "hello, ${1}, ${2}"
    

    执行:sh sunpy.sh SHELL SUNPY
    结果:hello, SHELL, SUNPY

    1. 函数传参
    function execute() {
            echo "hello, ${1}, ${2}"
    }
    execute SHELL SUNPY
    

    执行:sh sunpy.sh
    结果:hello, SHELL, SUNPY
    问题:如果外边同样也传入了参数,那么结果还是函数内的结果(小范围屏蔽大范围)

    Shell特殊变量

    1. $$:当前 Shell 进程 ID。
    2. $0: 当前脚本的文件名。
    3. $#:传递给脚本或函数的参数个数。
    4. $n(n≥1):传递给脚本或函数的参数。
    echo "Process ID: $$"
    echo "File Name: $0"
    echo "First Parameter : $1"
    echo "Second Parameter : $2"
    echo "Total: $#"
    

    结果:

    [root@izuf6ea4rfo45y44oj74jhz shell_program]# sh sunpy.sh fp sp
    Process ID: 21368
    File Name: sunpy.sh
    First Parameter : fp
    Second Parameter : sp
    Total: 2
    
    1. $* 会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。$@ 仍然将每个参数都看作一份数据,彼此之间是独立的。两者都表示传递脚本和函数的参数。
    count1=0
    count2=0
    echo "print each param from \"\$*\""
    for var in "$*"
    do
        echo "$var"
        let count1+=1
    done
    echo ${count1}
    
    echo "print each param from \"\$@\""
    for var in "$@"
    do
        echo "$var"
        let count2+=1
    done
    echo ${count2}
    

    结果:

    [root@izuf6ea4rfo45y44oj74jhz shell_program]# sh sunpy.sh a b c
    print each param from "$*"
    a b c
    1
    print each param from "$@"
    a
    b
    c
    3
    
    1. $?获取函数返回值
    function add(){
        return $(expr $1 + $2)
    }
    add 10 5
    echo $?
    
    [root@izuf6ea4rfo45y44oj74jhz shell_program]# sh zhangjl.sh 
    15
    

    条件语句

    function compare(){
            if [ $1 > $2 ]
            then
                    return 1
            else
                    return 0
            fi
    }
    compare 10 5
    echo $?
    

    结果:

    1
    

    循环语句

    叠加:

    i=1
    total=0
    while (( i <= 10 ))
    do
            let "total+=i"
            let "i+=1"
    done
    echo ${total}
    

    相关文章

      网友评论

          本文标题:Shell Script(未完)

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