当前位置: 首页 > article >正文

Shell $0

个人博客地址:Shell $0 | 一张假钞的真实世界

我们已经知道在Shell中$0表示Shell脚本的文件名,但在有脚本调用的情形中,子脚本中的$0会是什么值呢?我们通过下面的实例来看。

已测试系统列表:

  • Mac OS X EI Capitan 10.11.6
  • Ubuntu 16.04 LTS (GNU/Linux 4.4.0-28-generic x86_64)

父脚本a.sh,位置test1/a.sh,内容如下:

!/usr/bin/env bash

echo "$0"
. ../test2/b.sh

子脚本b.sh,位置test2/b.sh,内容如下:

#!/usr/bin/env bash

echo "the sub script is: $0"

此时执行父脚本输出结果是:

$ sh a.sh
the main script is a.sh
the sub script is: a.sh

如果父脚本内容如下:

#!/usr/bin/env bash

echo "the main script is $0"
../test2/b.sh

则输出结果为:

$ sh a.sh 
the main script is a.sh
the sub script is: ../test2/b.sh

可见,在父脚本中调用子脚本的不同,在子脚本中$0的值也不同。至于为什么会这样本人需要继续学习以找到答案。

测试过程中注意给脚本赋可执行权限。


http://www.kler.cn/a/531225.html

相关文章:

  • 【C语言】自定义类型讲解
  • 在 Ubuntu 中使用 Conda 创建和管理虚拟环境
  • 数组—学习
  • JavaWeb入门-请求响应(Day3)
  • 低成本、高附加值,具有较强的可扩展性和流通便利性的行业
  • HTML 字符实体
  • git基础使用--4---git分支和使用
  • 数据结构(2)——线性表与顺序表实现
  • AMD模块
  • 25.2.3 【洛谷】作为栈的复习不错(学习记录)
  • opencv图像处理框架
  • 【Rust自学】19.4. 宏(macro)
  • Javascript代码库-jQuery入门
  • 读算法简史:从美索不达米亚到人工智能时代05天气预报
  • Apache Iceberg数据湖技术在海量实时数据处理、实时特征工程和模型训练的应用技术方案和具体实施步骤及代码
  • 爱普生L3153打印机无线连接配置流程
  • 【C++】B2120 单词的长度
  • C++11 多线程 锁与条件变量:mutex、lock_guard、unique_lock 和 condition_variable
  • 电控三周速成计划参考
  • 51c嵌入式~电路~合集25
  • GRE阅读双线阅读 --青山学堂GRE全程班 包括 阅读、数学、写作、填空、背单词
  • Math数字类
  • CH340G上传程序到ESP8266-01(S)模块
  • 大模型领域的Scaling Law的含义及作用
  • 7-4 西安距离
  • SAP HCM 回溯分析