03-shell-传递参数

简介: 03-shell-传递参数

前言

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

代码示例

  • 加执行权限 :chmod +x test.sh
  • 执行:./test.sh 1 2 3
1. #!/bin/bash
2. # 保存为test.sh 
3. echo "Shell 传递参数实例!";
4. echo "执行的文件名:$0";
5. echo "第一个参数为:$1";
6. echo "第二个参数为:$2";
7. echo "第三个参数为:$3";
8. 
9. #输出
10. #Shell 传递参数实例!
11. #执行的文件名:test.sh
12. #第一个参数为:1
13. #第二个参数为:2
14. #第三个参数为:3

其他参数处理说明

参数处理 说明
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。
如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。
如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$- 显示Shell使用的当前选项,与set命令功能相同。
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
1. echo "Shell 传递参数实例!";
2. echo "执行的文件名:$0";
3. echo "第一个参数为:$1";
4. echo "第二个参数为:$2";
5. echo "第三个参数为:$3";
6. echo "参数个数为:$#"
7. echo 参数为:$*
8. echo 参数为:$@
9. echo 进程号:$$
10. echo 最后一个命令退出状态:$?
11. echo 最后一个进程号:$!
12. echo $-

$* 与 $@ 区别

  • 相同点:都是引用所有参数。
  • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
1. #!/bin/bash
2. 
3. echo "-- \$* 演示 ---"
4. for i in "$*"; do
5. echo $i
6. done
7. 
8. echo "-- \$@ 演示 ---"
9. for i in "$@"; do
10. echo $i
11. done


相关文章
|
7月前
|
存储 缓存 Linux
【Shell 命令集合 磁盘维护 】Linux 设置和查看硬盘驱动器参数 hdparm命令使用教程
【Shell 命令集合 磁盘维护 】Linux 设置和查看硬盘驱动器参数 hdparm命令使用教程
153 0
|
机器学习/深度学习 Shell
Shell 传递参数
Shell 传递参数
72 0
|
SQL 分布式计算 Hadoop
55 Hive Shell参数
55 Hive Shell参数
56 0
|
4月前
|
Shell
[shell]在curl测试的data参数中引用变量
[shell]在curl测试的data参数中引用变量
240 1
|
7月前
|
存储 弹性计算 运维
调整虚拟机内存参数的 shell 脚本
【4月更文挑战第29天】
80 2
|
7月前
|
存储 弹性计算 运维
调整虚拟机内存参数的shell 脚本
【4月更文挑战第29天】
68 0
|
7月前
|
编解码 Linux Shell
【Shell 命令集合 系统设置 】Linux 设置Linux系统的控制台参数和属性setconsole命令 使用指南
【Shell 命令集合 系统设置 】Linux 设置Linux系统的控制台参数和属性setconsole命令 使用指南
109 0
|
7月前
|
存储 Shell Linux
【Shell 命令集合 系统设置 】Linux 将参数作为命令行输入 eval命令 使用指南
【Shell 命令集合 系统设置 】Linux 将参数作为命令行输入 eval命令 使用指南
107 0
|
7月前
|
存储 Shell
Shell变量和参数
Shell变量和参数
38 3
|
7月前
|
Shell
shell变量和参数
shell变量和参数
58 1