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

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

$0 获取命令(脚本)本身(如 ./test.sh 1 2 ,则 $0=./test.sh ,如 source test.sh 1 2 ,则$0=test.sh)

$1 获取命令行中第1个参数

$2 获取命令行中第2个参数

以此类推...

$# 获取命令行中参数个数

$* 获取所有参数

$@ 与$*相同,不同点是$*合并参数为一个参数,$@则不会合并(相当于获取参数列表)

其余几个特殊的参数:

$$ 获取脚本运行的当前进程ID号

$? 显示上一条命令退出的状态,执行正常则返回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 ,执行结果:

49d94c17a43a

test.sh执行结果

$*与$@的区别

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

#!/bin/bash

echo "测试\$* 和 \$@ 的区别,不使用双引号"

echo "测试\$*,打印参数列表:"

for param in $*

do

echo "$param"

done

echo "测试\$@,打印参数列表:"

for param in $@

do

echo "$param"

done

结果:

49d94c17a43a

执行结果1

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

#!/bin/bash

echo "测试\$* 和 \$@ 的区别,使用双引号"

echo "测试\$*,打印参数列表:"

for param in "$*"

do

echo "$param"

done

echo "测试\$@,打印参数列表:"

for param in "$@"

do

echo "$param"

done

结果:

49d94c17a43a

执行结果2

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值