美文网首页
Linux脚本中几种特殊的参数变量

Linux脚本中几种特殊的参数变量

作者: lF_IF | 来源:发表于2019-04-03 20:59 被阅读0次

    在shell脚本中,可以通过$来获取执行脚本命令传过来的参数,比如:

    • $0 获取命令(脚本)本身(如 ./test.sh 1 2 ,则 $0=./test.sh ,如 source test.sh 1 2 ,则$0=test.sh)
    • $1 获取命令行中第1个参数
    • $2 获取命令行中第2个参数
    • 以此类推...
    • $# 获取命令行中参数个数
    • $* 获取所有参数
    • $@$*相同,不同点是$*合并参数为一个参数,$@则不会合并(相当于获取参数列表)

    其余几个特殊的参数:

    1. $$ 获取脚本运行的当前进程ID号
    2. $? 显示上一条命令退出的状态,执行正常则返回0,否则返回非0

    代码示例:
    编辑脚本文件:test.sh

    #!/bin/bash
    
    echo "Shell 传递参数实例!"
    echo "\$0 命令(脚本文件)名称:$0"
    echo "\$1 第一个参数:$1"
    echo "\$2 第二个参数:$2"
    
    echo "\$# 参数个数:$#"
    echo "\$* 脚本参数(合并):$*"
    echo "\$@ :脚本参数列表(不合并)$@"
    echo "\$\$ 当前执行环境进程ID号: $$"
    echo "\$! 运行的最后一个进程的ID号:$!"
    echo "\$? 上一条命令执行返回状态: $?"
    

    执行:sh test.sh tom jerry jim ,执行结果:

    test.sh执行结果

    $*$@的区别

    测试脚本1:$*$@ 使用的时候不使用"

    #!/bin/bash
    echo "测试\$* 和 \$@ 的区别,不使用双引号"
    echo "测试\$*,打印参数列表:"
    for param in $*
    do
            echo "$param"
    done
    
    echo "测试\$@,打印参数列表:"
    for param in $@
    do
            echo "$param"
    done
    

    结果:


    执行结果1

    测试脚本2:$*$@ 使用的时候使用"

    #!/bin/bash
    echo "测试\$* 和 \$@ 的区别,使用双引号"
    echo "测试\$*,打印参数列表:"
    for param in "$*"
    do
        echo "$param"
    done
    
    echo "测试\$@,打印参数列表:"
    for param in "$@"
    do
        echo "$param"
    done
    

    结果:


    执行结果2

    可见:在不使用双引号(")的情况下,二者获取的都是参数列表,但是在使用双引号的情况下,$*会变成一个字符串(合并所有参数作为一个参数了)

    相关文章

      网友评论

          本文标题:Linux脚本中几种特殊的参数变量

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