shell 中的位置参数

1、位置变量

        位置变量并不是用户自定义的,而在shell中可以直接使用,这样一些约定俗成的规则就可以了。

        定义:当一条命令或脚本执行时,后面可以跟多个参数,我们使用位置参数变量来表示这些参数

2、位置参数变量

$n : n为数字,

$0代表脚本本身

1 9代表第1~9参数,10以上的参数需要用大括号包含,如:${10}

$@:命令行所有参数,但每个参数区别对待,推荐使用这个

$*:命令行所有参数,所有参数视为一个整体

$#:参数总个数

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

$!: 上一个进程的ID号

3、 @*的区别

$*:命令行所有参数,所有参数视为一个整体

$@:命令行所有参数,但每个参数区别对待

1
2
3
4
5
6
7
8
9
10
11
# 双引号中"*"和"@"区别
echo "\$*的输出如下:"
for i in "$*"; do  # 多个参数当成一个参数传递了
   echo $i
done
 
echo "  "
echo "\$@的输出如下:"
for i in "$@"; do  # 多个参数分开传递
   echo $i
done

 

 4、set -- 和 exec 的用法

4.1 在Shell中,set -- a b c 的命令用于设置位置参数(Positional Parameters)。

  • 语法set -- [arguments]

  • 用途:

    • set -- 用于重新定义位置参数,即 $1$2, ... ,通常用于重设或覆盖脚本启动时传递给它的参数。
    • 在 set -- /bin/node_exporter "$@" 中:
      • /bin/node_exporter 被设置为新的位置参数 $1
      • "$@" 表示传递给当前脚本的所有原始参数,被添加为从 $2 开始的后续位置参数。
  • 结果: 在此命令执行后,位置参数的第一个元素为 /bin/node_exporter,随后是所有原有的参数。这样做的效果是准备好一组命令和参数供后续执行。

1
2
3
4
5
#!/bin/bash<br>
set -- a b c
echo "First argument: $1"
echo "Second argument: $2"
echo "Third argument: $3" 

4.2 exec

exec

  • 语法exec [command] [arguments]

  • 用途:

    • exec 用于用指定的命令替换当前的 Shell 进程。执行此命令后,原来的 Shell 进程会终止并被新的命令进程所替代。
    • 在 exec "$@" 中:
      • "$@" 展开为所有位置参数,所以 exec 实际上在执行 node_exporter 程序以及所有准备好的参数。
      • exec 不会启动一个新的子进程,而是替换了 Shell 本身的进程,因此没有返回到原来的脚本中,节省了系统资源。

 

posted @   凡人半睁眼  阅读(229)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
历史上的今天:
2020-06-28 亲和性和反亲和性 污点与污点容忍度
2020-06-28 二进制 k8s集群(docker)

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示