美文网首页
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