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

linux shell脚本被包含是什么意思?.命令和source命令(在脚本中运行脚本,脚本中调用脚本)(脚本包含,父子脚本)

在 shell 编程中,当一个 shell 脚本被另一个 shell 脚本包含,即用 .source 命令包含,则被包含的脚本在当前 shell 进程内执行,并且可以访问当前 shell 进程的环境变量和函数。
此时,$0 代表的是主脚本的名称,而 $BASH_SOURCE 数组则包含了当前脚本的名称和被包含的脚本的名称。
因此,$(dirname "${BASH_SOURCE[0]}") 用来获取当前脚本(包括被包含的脚本)所在目录的路径。

示例1:用.命令包含脚本运行

helper.sh

# helper.sh
function greet() {echo "Hello, $1"
}
# main.sh
. ./helper.sh
greet "User"

运行main.sh时,将输出:

Hello, User

用source命令包含脚本运行

# helper.sh
function greet() {echo "Hello, $1"
}
# main.sh
source ./helper.sh
greet "User"

运行main.sh时,也将输出:

Hello, User

参考文章:linux shell脚本获取脚本目录时,(dirname“(dirname “(dirname{BASH_SOURCE[0]}“)与$(dirname $0)有什么区别?

相关文章:

linux shell脚本被包含是什么意思?.命令和source命令(在脚本中运行脚本,脚本中调用脚本)(脚本包含,父子脚本)

在 shell 编程中,当一个 shell 脚本被另一个 shell 脚本包含,即用 . 或 source 命令包含,则被包含的脚本在当前 shell 进程内执行,并且可以访问当前 shell 进程的环境变量和函数。 此时,$0 代表的是主脚本的名称&#…...

MySQL进阶篇之锁(lock)

05、锁 5.1、概述 1、介绍 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据…...

TMDSEVM6657LS评估板恢复出厂默认状态

TMDSEVM6657LS评估板恢复出厂默认状态 前言 TMDSEVM6657LS评估板特别适用于DSP开发的初学者,但有时候拿到手的开发板几经流转,被别人修改过,也可能自己烧录过程出错,导致开发板的状态未知等原因,需要恢复到出厂默认状…...

聊一聊,我对DDD的关键理解

作者:闵大为 阿里业务平台解决方案团队 当我们在学习DDD的过程中,感觉学而不得的时候,可能会问:我们还要学么?这的确引人深思。本文基于工作经验,尝试谈谈对DDD的一些理解。 一、序 《阿甘正传》中&#xf…...

算法笔记(一)—— 认识复杂度和简单排序算法

时间复杂度是在一个算法流程中,常数操作的数量级指标。(最差情况下的算法表现) 比较两个算法的优劣,在足够的空间下,看时间复杂度指标,若相同,需要在大数据运行下来判断两个算法的“常数项指标…...

MQ消息中间件常见题及解决办法

目录儿常见MQRocketMQ2、RocketMQ测试可用MQ常见问题1、幂等性问题2、如何保证消息不丢失3、消息积压问题4、事务消息设计分析常见MQ RocketMQ RocketMQ又四部分组成 NameServer 同步Broker服务信息,给消费者和生产者提供可用Broker的服务信息。Broker 消息存储业…...

网关服务限流熔断降级分布式事务

目录一、网关服务限流熔断降级二、Seata--分布式事务1、分布式事务基础①事务②本地事物③分布式事务④分布式事务的场景2、分布式事务解决方案①全局事务②最大努力通知③TCC事务3、Seata介绍4、Seata实现分布式事务控制①案例基本代码(异常模拟)②启动…...

JVM——7JVM调优实战及常量池详解

Arthas工具的使用 阿里巴巴开源的java诊断工具 下载插件 上传至linux环境 在linux跑起来的java项目,可以用Arthas进行查看 项目上线前的时候没问题,上线了就出问题 ,用来查看线上代码 jad 项目名 :反编译线上正在运行的代码 用…...

子串分值【第十一届】【省赛】【A组】

问题描述 对于一个字符串 s,我们定义 s 的分值 f(s) 为 s 中恰好出现一次的字符个数。例如 f("aba")1,f("abc")3, f("aaa")0。 现在给定一个字符串 s[0..n−1](长度为 n),请你计算对于…...

SpringCloud 中 Config、Bus、Stream、Sleuth

文章目录🚏 第十三章 分布式配置中心🚬 一、Config 概述🚬 二、Config 快速入门🚭 config-server:🛹 1、使用gitee创建远程仓库,上传配置文件🛹 2、导入 config-server 依赖&#x1…...

Quantum 构建工具使用新的 TTP 投递 Agent Tesla

Zscaler 的研究人员发现暗网上正在出售名为 Quantum Builder 的构建工具,该工具可以投递 .NET 远控木马 Agent Tesla。与过去的攻击行动相比,本次攻击转向使用 LNK 文件。 Quantum Builder 能够创建恶意文件,如 LNK、HTA 与 PowerShell&…...

浏览器中的 JavaScript 执行机制

思维导图 本文为反复学习极客时间-《浏览器的工作原理与实践》-浏览器中的 JavaScript 执行机制章节中的一些思考与记录。 一些重要概念 变量提升 所谓的变量提升,是指在 JavaScript 代码执行过程中,JavaScript 引擎把变量的声明部分和函数的声明部分…...

kafka集群搭建及问题

一、zookeeper集群搭建 1、创建文件夹 cd /home mkdir zookeeper 2、下载 cd zookeeper wget https://downloads.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz 解压到当前文件夹 tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz 文件夹重命…...

不要忽视web渗透测试在项目中起到的重要性

在当前数字化环境中,IT的一个里程碑式增长便是公司组织和企业数字化。为了扩大市场范围和方便业务,许多组织都在转向互联网。这导致了一股新的商业浪潮,它创造了网络空间中的商业环境。通过这种方式,公司和客户的官方或机密文件都…...

Early Stopping中基于测试集(而非验证集)上的表现选取模型的讨论

论文中一般都是用在验证集上效果最好的模型去预测测试集,多次预测的结果取平均计算准确率或者mAP值,而不是单纯的取一次验证集最好的结果作为论文的结果。如果你在写论文的过程中,把测试集当做验证集去验证的话,这其实是作假的&am…...

appium ios真机自动化环境搭建运行(送源码)

appium ios真机自动化环境搭建&运行(送源码) 目录:导读 (1)安装JDK,并配置环境变量,方法如下: (2)安装Xcode、Xcode commandline tools和iOS模拟器 &…...

米尔基于ARM嵌入式核心板的电池管理系统(BMS)

BMS全称是Battery Management System,电池管理系统。它是配合监控储能电池状态的设备,主要就是为了智能化管理及维护各个电池单元,防止电池出现过充电和过放电,延长电池的使用寿命,监控电池的状态。 图片摘自网络 电池…...

Java后端项目IDEA配置代码规范检查,使用checkStyle实现

最近的Java后端项目想实现代码的规范检查,调研了一圈,终于找到了简单的方式实现:以下是常见的几种方案: 1、在客户端做 git hook,主要是用 pre-commit 这个钩子。前端项目中常见的 husky 就是基于此实现的。但缺点也很…...

Nginx_4

Nginx负载均衡 负载均衡概述 早期的网站流量和业务功能都比较简单,单台服务器足以满足基本的需求,但是随着互联网的发展,业务流量越来越大并且业务逻辑也跟着越来越复杂,单台服务器的性能及单点故障问题就凸显出来了&#xff0c…...

linux Ubuntu KUbuntu 系统安装相关

系统安装 本来想快到中午的时候调试一下服务器上的http请求接收代码。我的电脑上装的是kali的U盘系统,然后我的U盘居然找不到了(然后之前安装的系统不知道是否是写入软件的原因,没办法解析DNS,我都用的转发的,这让我体验非常差。kali的系统工具很多&…...

SEO_移动端SEO优化的关键步骤与注意事项介绍

<h1 id"seo">移动端SEO优化的关键步骤与注意事项介绍</h1> <p>在互联网时代&#xff0c;移动端已经成为用户访问网站的主要途径。因此&#xff0c;移动端SEO优化变得尤为重要。本文将详细介绍移动端SEO优化的关键步骤与注意事项&#xff0c;帮助你…...

Cadence导出Gerber文件保姆级教程:从Database Check到嘉立创预览,一步不落

Cadence导出Gerber文件全流程实战&#xff1a;从设计验证到生产准备的深度指南 第一次在Cadence Allegro中导出Gerber文件时&#xff0c;那种面对几十个参数选项的手足无措感我至今记忆犹新。作为电子设计自动化(EDA)领域的工业标准工具&#xff0c;Cadence的强大功能背后是复杂…...

【脚本篇】---vim下verilog-mode-v2的高效开发实践

1. 为什么选择vimverilog-mode-v2组合 第一次接触Verilog代码时&#xff0c;我用的是各种图形化IDE&#xff0c;直到有次在服务器上紧急修改代码才发现&#xff1a;原来vim配合verilog-mode插件可以这么高效。这个组合就像瑞士军刀里的主刀——看起来朴实无华&#xff0c;但能解…...

Crossplane认证考试指南:备考资源与实战题解析

Crossplane认证考试指南&#xff1a;备考资源与实战题解析 【免费下载链接】crossplane Crossplane 是一个开源的资源抽象层&#xff0c;用于管理多云计算资源&#xff0c;支持混合云和多云环境。 * 资源抽象层、多云和混合云环境管理 * 有什么特点&#xff1a;支持多种云服务提…...

专业流媒体视频下载工具技术解析与使用指南

专业流媒体视频下载工具技术解析与使用指南 价值主张&#xff1a;高效解决流媒体内容本地化需求 在数字内容消费日益普及的今天&#xff0c;用户对在线视频资源的本地保存需求持续增长。m3u8-downloader作为一款专业的流媒体下载工具&#xff0c;专注于解决m3u8格式视频的高效…...

学生党必备:AutoDL服务器+Pycharm远程开发极简配置(含学生认证技巧)

学生党高效开发指南&#xff1a;AutoDLPycharm远程开发全攻略 1. 低成本深度学习开发环境搭建 作为一名深度学习爱好者&#xff0c;最头疼的莫过于硬件资源不足。显卡价格居高不下&#xff0c;笔记本跑个MNIST都卡顿&#xff0c;更别提训练复杂模型了。好在云服务器为我们提供了…...

OpenClaw+nanobot学术助手:文献自动归类与摘要生成

OpenClawnanobot学术助手&#xff1a;文献自动归类与摘要生成 1. 为什么需要自动化文献管理工具 作为一名经常需要阅读大量论文的研究者&#xff0c;我长期被文献管理问题困扰。电脑里堆积如山的PDF文件&#xff0c;每次需要查找特定内容时都要花费大量时间翻找。更痛苦的是&…...

免费领取《MapleSim卷材加工和卷绕系统建模仿真教程》

在薄膜、纸张、电池极片、电子材料等卷对卷加工中&#xff0c;你是否还在为张力波动、卷材打滑、收放卷不稳而头疼&#xff1f;物理样机调试成本高、风险大&#xff0c;单纯依靠经验难以解决复杂的动态耦合问题。 Maplesoft 中国技术团队近期发布了 MapleSim 卷材处理库&#…...

N_m3u8DL-RE:现代流媒体下载的终极解决方案

N_m3u8DL-RE&#xff1a;现代流媒体下载的终极解决方案 【免费下载链接】N_m3u8DL-RE 跨平台、现代且功能强大的流媒体下载器&#xff0c;支持MPD/M3U8/ISM格式。支持英语、简体中文和繁体中文。 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE 在当今…...

抖音弹幕协议逆向实战:手把手解析Protobuf数据流(附Python代码)

抖音直播弹幕协议解析实战&#xff1a;从Protobuf到可读数据的完整链路 当直播间里飘过一条"老板大气"的弹幕时&#xff0c;你可能不知道这条简单的文字背后经历了怎样的技术旅程。作为开发者&#xff0c;我们看到的不是屏幕上那些花花绿绿的文字&#xff0c;而是一串…...