5.shell传递参数

       我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$nn 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……

1.详细参数介绍:

参数说明
$0当前执行文件的名称
$1......$99第1个参数......第99个参数
$#传递到脚本的参数个数(总共传递了多少个参数)
$*将传递的所有参数,以一个字符串的形式返回。如"$*"用引号括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@与$*差不多。但是"$@"如果用引号括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

   实例:paramTest.sh

#!/bin/bash
echo "文件名:$0"
echo "第1个参数:$1"
echo "第2个参数:$2"
echo "第3个参数:$3"
echo "第4个参数:$4"
echo "第5个参数:$5"
echo "第6个参数:$6"
echo "第7个参数:$7"
echo "............................."
echo "总共传递参数个数:${#}"
echo "............................."
echo "\$*将所有参数以一个字符串形式返回:$*"
echo "............................."
echo "脚本运行的当前进程ID:$$"
echo "............................."
echo "\$@将所有参数以一个字符串形式返回:$@"
echo "............................."
echo "显示最后命令的退出状态:$?"

  执行该shell脚本,命令:./paramTest.sh 1 2 3 4 5 6 7

文件名:./paramTest.sh
第1个参数:1
第2个参数:2
第3个参数:3
第4个参数:4
第5个参数:5
第6个参数:6
第7个参数:7
.............................
总共传递参数个数:7
.............................
$*将所有参数以一个字符串形式返回:1 2 3 4 5 6 7
.............................
脚本运行的当前进程ID:1490
.............................
$@将所有参数以一个字符串形式返回:1 2 3 4 5 6 7
.............................
显示最后命令的退出状态:0

2.$*$@的区别

  • 相同点:都是引用所有参数。
  • 不同点:只有在加双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
echo "---加双引号\$*演示---"
for i in "$*";do
   echo ${i}
done

echo "............................."

echo "---加双引号\$@演示---"
for i in "$@";do
   echo ${i}
done

结果:执行: ./paramTest.sh 1 2 3 4 5 6 7

加双引号$*演示
1 2 3 4 5 6 7
.............................
加双引号$@演示
1
2
3
4
5
6
7

本文仅用作:学习笔记

参考:https://www.runoob.com/linux/linux-shell-passing-arguments.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扛麻袋的少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值