首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

预期从bash脚本调用的脚本在完成时不会返回控制

问题描述:预期从bash脚本调用的脚本在完成时不会返回控制。

回答:

在bash脚本中,通常我们可以使用不同的方式调用其他脚本或命令,并控制脚本执行的方式。但是,有时候我们可能希望在调用的脚本执行完成后,不再返回控制到调用脚本。下面是几种实现这个目标的方法:

  1. 使用exec命令:exec命令会用指定的命令替换当前的shell进程,从而导致控制不会返回到调用脚本。例如:
  2. 使用exec命令:exec命令会用指定的命令替换当前的shell进程,从而导致控制不会返回到调用脚本。例如:
  3. 通过exec命令调用的脚本执行完毕后,控制权会直接交给被调用的脚本,并且不会再返回到调用脚本。
  4. 使用source命令:source命令用于在当前shell环境下执行指定的脚本文件,而不是创建一个新的子shell。这样,被调用的脚本执行完毕后,控制权仍然在调用脚本中。例如:
  5. 使用source命令:source命令用于在当前shell环境下执行指定的脚本文件,而不是创建一个新的子shell。这样,被调用的脚本执行完毕后,控制权仍然在调用脚本中。例如:
  6. 通过source命令调用脚本后,被调用的脚本执行完毕后,控制权会返回到调用脚本中,继续执行后续的命令。

需要注意的是,在以上的方法中,被调用的脚本需要有可执行权限。可以使用chmod +x script_name.sh命令为脚本添加可执行权限。

希望以上内容对你有所帮助。关于bash脚本和其他技术领域的更多详细信息和应用场景,你可以参考腾讯云的产品文档和技术文档。

腾讯云相关产品推荐:

  • 云服务器(CVM):提供全面的计算能力,帮助用户快速构建云计算环境。了解更多:云服务器产品介绍
  • 云函数(SCF):无需管理服务器,提供事件驱动的计算服务。了解更多:云函数产品介绍
  • 云数据库 MySQL 版(TencentDB for MySQL):稳定可靠的关系型数据库服务。了解更多:云数据库 MySQL 版产品介绍
  • 腾讯云网络安全(Security Center):提供一站式安全管理和威胁防护服务。了解更多:腾讯云网络安全产品介绍
  • 视频处理(云点播):提供强大的音视频处理能力,包括转码、截图、水印等功能。了解更多:视频处理产品介绍
  • 腾讯云人工智能(AI Lab):提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等。了解更多:腾讯云人工智能产品介绍

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 拥有此神技,脚本调试从此与 echo、set、test 说分手!

    比如在 Bash 脚本中可能会根据传入参数来组合出内部所调用命令选项和参数,我们要验证是这些选项和参数确实如我们预期。...如果说我们就是想知道这个命令搭配上这些选项参数是否能按我们预期那样工作呢?很简单,那就单独命令行里面去执行一下。如果在命令行中也不能按预期工作,放到 Bash 脚本里面也一样不会预期工作。...什么样测试才是 Bash 脚本单元测试? 首先,所有存在于PATH环境变量路径中命令都不应该在单元测试中被执行。对 Bash 脚本来说,被调用这些命令可以正常运行,有返回值,有输出。...但脚本调用这些命令都是被模拟出来,用于模拟对应真实命令行为。这样,我们 Bash 脚本单元测试中就避免了很大一部分外部依赖,而且测试执行速度也不会受到真实命令影响了。...比如可以一个全新环境中执行一个调用了大量第三方命令 Bash 脚本。 快:因为所有的命令都不会被真正执行,所以每一个测试用例执行都非常快。

    1K20

    Bash编程中 set -e 与 trap exit ERR 有什么相同点和不同点

    相同点 目的:两者都是为了提高脚本健壮性,旨在及时发现并响应错误情况,避免因某一部分失败而导致整个脚本继续执行潜在错误逻辑。 错误处理:它们都能在命令执行失败(即返回非零退出状态)采取行动。...不同点 控制粒度: set -e提供是全局性错误处理机制,一旦任何命令失败,整个脚本立即终止。这可能导致某些情况下过于严格,比如在预期某些命令可能会失败但希望后续命令继续执行场景。...使用trap可以让开发者完全控制错误处理逻辑,包括决定何时、如何响应特定类型错误,以及是否让脚本继续执行。 提示信息: set -e:当命令失败脚本会直接退出,无额外打印信息。...综上所述,set -e 提供了一种快速简单错误退出机制,适合那些希望命令失败立即停止脚本场景。...需要注意是:“进程替换”(process substitution)中执行 exit 命令或因错误触发陷阱,并不会终止外部进程,只会结束那个特定子进程。

    11210

    如何在Bash脚本中使用expect来为SSH命令提供密码

    问题 我正尝试 Bash 脚本中使用 Expect 来提供 SSH 密码。密码输入这部分工作正常,但我并没有像预期那样进入 SSH 会话,而是直接回到了 Bash 环境中。 我脚本如下: #!...SSH 会话后,再返回到我 Bash 脚本继续执行。...我之所以先使用 Bash 脚本调用 Expect,是因为我需要通过一个菜单来选择要连接单元 / 设备。 回答 混合使用 Bash 和 Expect 可能不是达到期望效果最佳方式。...但是安全角度看,这非常危险 —— 命令行参数可能被系统上任何其他进程读取。...虽然 sshpass 有可能覆盖这些参数,但在它启动并能够执行覆盖之前,存在一个时间段,此时密码可被任何进程查看,这是极大安全隐患。强烈建议不要将这种形式脚本用在生产环境上。

    11410

    Shell中傻傻分不清楚TOP3

    UNIX或Linux系统中,Shell即是用户交互界面,也是控制系统脚本语言。当然现在用户也可以选择图形化界面做一些和操作系统交互。层次示意图如下: ?...一般发行版Linux系统中,默认shell程序就是bash。我们写shell脚本,通常也会在脚本文件头部指定bash作为脚本解释器。 ? 这里多说一句,zsh有时也作为猿媛们默认shell。...—>~/.bashrc 当调用一个non-nteractive模式shell进程,通常是执行脚本,此时配置项是环境变量中读取和执行,也就是env命令输出配置项。...系统变量 Shell中系统变量主要在对参数判断和命令返回值判断使用,包括脚本和函数参数和返回值判断。没啥可说,主要难记且脚本中经常出现: ?...基本语法 Shell程序中,当指定条件为真,整个条件测试返回值为 0;反之,如果指定条件为假,整个条件测试返回值为 非0。

    72130

    shell编程菜鸟教程_java并发编程实战 pdf

    它接收用户输入命令,并把它送入内核去执行。内核是Linux系统心脏,开机自检就驻留在计算机内存中,直到计算机关闭为止,而用户应用程序存储计算机硬盘上,仅当需要才被调入内存。...:接收上一条命令返回状态码 返回状态码0-255之间 $#:参数个数 *:或者@:所有的参数 $$:获取当前shell进程号(PID)(可以实现脚本自杀)(或者使用exit命令直接退出也可以使用...循环控制 循环控制命令——break break命令是处理过程中跳出循环一种简单方法,可以使用break命令退出任何类型循环,包括while循环和for循环 循环控制命令——continue continue...还以Bash为例,当以非login方式启动,它会调用~/.bashrc,随后~/.bashrc中调用/etc/bashrc,最后/etc/bashrc调用所有/etc/profile.d目录下脚本。...当bash以login shell启动,它会执行/etc/profile中命令,然后/etc/profile调用/etc/profile.d目录下所有脚本;然后执行~/.bash_profile,

    4.6K20

    Shell入门知识

    etc/profile.d文件中设置,设置格式为export name=value /etc/profile中定义完成后,需要重新加载配置文件 source /etc/profile ?...其中/etc/profile.d设置shell脚本可以启动shelle客户端时候就执行这个脚本,这个文件夹中存储都为脚本。 创建脚本内容如下 ?...单引号双引号区别 单引号:原样输出 双引号:如果里面有变量,会输出变量 没有引号:输出变量 ? 传递参数 可以调用脚本时候给脚本传递参数,脚本内使用$1 $2 .........接受传递参数,当参数超过9时候,需要用花括号括起来 ${10} 特殊调用参数: $0:返回Shell文件名称 $$:当前脚本PID $#:传递所有参数 $@:程序中所有参数...Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似),数组下标0开始。

    84600

    shell语法学习

    9.使用 If Else 进行更多控制 将 else 构造与 if 结合起来,可以更好地控制脚本逻辑。下面显示了一个简单示例。 #!...11.使用 OR 运算符 OR 运算符是另一个关键构造,它允许我们脚本中实现复杂、健壮编程逻辑。与 AND 相反,当 OR 运算符任一操作数为真,由 OR 运算符组成语句返回真。...仅当由 OR 分隔每个操作数为假,它才返回假。 #!.../test.sh X=44 Y=100 Bash 它应该返回 X+Y=144。这里参数存储 “$@” 中,脚本使用 Linuxcut 命令获取它们。...但在这里,我们使用了一个名为 Add 函数来完成这项工作。因此,每当您需要再次添加,只需调用此函数,而不必再次编写该部分。

    1.2K40

    40 个简单又有效 Linux Shell 脚本示例

    9、使用 If Else 进行更多控制 将 else 构造与 if 结合起来,可以更好地控制脚本逻辑。下面显示了一个简单示例。 #!...11、使用 OR 运算符 OR 运算符是另一个关键构造,它允许我们脚本中实现复杂、健壮编程逻辑。与 AND 相反,当 OR 运算符任一操作数为真,由 OR 运算符组成语句返回真。...仅当由 OR 分隔每个操作数为假,它才返回假。 #!...但在这里,我们使用了一个名为 Add 函数来完成这项工作。因此,每当您需要再次添加,只需调用此函数,而不必再次编写该部分。...29、 Shell 脚本发送邮件 bash 脚本发送电子邮件非常简单。下面的简单示例将演示一种 bash 应用程序执行此操作方法。 #!

    29010

    收藏~ 一篇教会你写90%shell脚本

    公司项目的开发过程中,需要编写shell脚本去处理一个业务,在编写过程中发现自身对shell脚本知识不够完善,顾整理一下,本文章主要内容来自菜鸟教程 , 也添加了一些知识点 看完这边文章应该就可以独立完成大部分脚本得编写...shell脚本中最重要就是对shell命令使用与组合,再使用shell脚本支持一些语言特性,完成想要功能。...(:<< 标识多行注释开始,并指定一个标识符作为开始结束标志) ---- 变量 变量类型 运行shell,会同时存在三种变量: 局部变量:局部变量脚本或命令中定义,仅在当前shell实例中有效,...1 : 将 stdout 和 stderr 合并后重定向到 file 读取外部输入 命令:read arg (脚本读取外部输入并赋值到变量上) shell脚本执行到上述命令,停止脚本执行并等待外部输入...-N 不输出列信息 -B 使用tab键 代替 分隔符 -e 执行SQL语句 退出脚本 命令:exit 退出脚本使用不同错误码,这样可以根据错误码来判断发生了什么错误。

    2.3K10

    Shell脚本编程_shell简单脚本

    函数管理 ① 定义函数 ② 查看函数 ③ 删除函数 (3) 函数调用 ① 交互式环境调用函数 ② 脚本中定义及使用函数 ③ 使用函数文件 (4) 函数返回值 (5) 环境函数 (6) 函数参数 (7)...bash shell 中内置变量,脚本代码中调用通过命令行传递给脚本参数。...返回最后一个后台进程进程号 用户可以脚本中使用以下命令自定义退出状态码: exit [n] #脚本中一旦遇到exit命令,脚本会立即终止;终止退出状态取决于exit命令后面的数字 #如果未给脚本指定退出状态码...: 被调用时创建,返回终止 调用概念: 函数只有被调用才会执行,通过给定函数名调用函数,函数名出现地方,会被自动替换为函数 代码。...函数执行结果返回值: 使用 echo 等命令进行输出 函数体中调用命令输出结果 函数退出状态码: 默认取决于函数中执行最后一条命令退出状态码 自定义退出状态码,其格式为: return 函数中返回

    8K10

    Bash脚本编程(原创)

    用sh名字调用非交互shell不会去读取其他启动脚本,--rcfile参数无效。当bash以POSIX模式启动(例如带有--posix参数)它使用POSIX标准来读取启动文件。...如果是,它会读取并执行~/.bashrc中命令。但是rshd一般不会用rc相关参数调用shell,也不会允许指定这些参数。...通过 local 函数可以函数内部建立本地变量。 4、如果在函数中使用 exit,则可以退出整个脚本,而退出函数则只是返回调用函数地方。...(2)参数: 通过位置参量可以向函数传递参数,该参数不会影响函数外使用任何位置参量。 (3)内建 return 函数: return 用来退出函数并返回调用函数地方。...这些可以通过 trap 命令来控制程序收到信号以后行为。信号是由一个进程发送给另外一个进程,或者特定键按下以后由操作系统发送给进程,又或者异常情况下发生,由数字组成非同步消息。

    1.3K30

    3分钟短文 | Linux 命令正确退出方式:exit 0

    引言 通常,在编写Bash脚本,需要在满足特定条件终止脚本,或者根据命令退出代码采取措施。 本文中,我们将介绍Bash exit内置命令和已执行命令退出状态。 ?...退出状态 每个shell命令成功终止都会返回退出代码。 按照惯例,退出代码为零表示命令已成功完成,非退出代码为零表示遇到错误。 特殊变量$?...返回最后执行命令退出状态: date &> /dev/null echo $? 该 date 命令成功完成,并且退出代码为 0。...下面是显示非脚本用户调用脚本如何终止脚本示例: ? 如果您以root用户身份运行脚本,则退出代码将为零。否则,脚本将以status退出1。...写在最后 每个 shell 命令终止,都会返回退出码, bash 脚本中你可以灵活地使用,并控制程序流程。 Happy coding :_) 我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

    1.9K30

    Shell 简明教程

    2. bash 启动 bash 启动脚本bash 启动时会自动执行脚本,因此用户可以把一些环境变量设置和 alias、umask 设置等放到启动脚本中,这样每次启动 shell 都会自动生效。...Shell里,需要每次启动非登录Shell设置一遍,所以就需要有非登录Shell启动脚本,所以一般来说 ~/.bash_profile 里设置环境变量, ~/.bashrc 里设置本地变量、函数...if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi 以 #! /bin/sh 开头脚本就是这种情况,不会运行任何脚本。 3....虽然内建命令不创建新进程,但是也会有返回值,通常也用 0 表示调用成功,这个返回值被称为 Exit Status (状态码),可以使用特殊变量 $? 读出。 3.2....Shell函数没有参数列表并不表示不能传参数,事实上,函数就像是迷你脚本调用函数可以传任意个参数,函数内同样是用 0 、 1 、 2 等变量来提取参数,函数中位置参数相当于函数局部变量,改变这些变量并不会影响函数外面的

    2.1K40

    案例驱动 :入门到掌握Shell编程详细指南

    Shell解析器 Linux提供Shell解析器有如下几种: cat /etc/shells centOS中默认解析器为bash echo $SHELL 二、入门案例 shell 脚本以#!.../bin/bash echo $* echo $@ $? $? (功能描述:最后一次执行命令返回状态。...) - 选项: - `-p:指定读取值提示符;` `-t:指定读取值等待时间(秒)` 参数 变量:指定读取值变量名 案例:提示5秒内,读取控制台输入名称 #!...功能描述:给定包含绝对路径文件名中去除文件名(非目录部分),然后返回剩下路径(目录部分) 案例:获取helloShell.sh 文件路径 dirname /root/Test/...不会像其它语言一样先编译。 函数返回值,只能通过$?系统变量获得,可以显示加:return返回,如果不加,将以最后一条命令运行结果,作为返回值。

    1.1K20

    一篇教会你写90%shell脚本

    公司项目的开发过程中,需要编写shell脚本去处理一个业务,在编写过程中发现自身对shell脚本知识不够完善,顾整理一下,本文章主要内容来自菜鸟教程 , 也添加了一些知识点 看完这边文章应该就可以独立完成大部分脚本得编写...shell脚本中最重要就是对shell命令使用与组合,再使用shell脚本支持一些语言特性,完成想要功能。...(:<< 标识多行注释开始,并指定一个标识符作为开始结束标志) ---- 变量 变量类型 运行shell,会同时存在三种变量: 局部变量:局部变量脚本或命令中定义,仅在当前shell实例中有效,其他...如果希望执行某个命令,但又不希望屏幕上显示输出结果,那么可以将输出重定向到 /dev/null: **输入重定向** 1. bash.sh < file : 将脚本输入重定向到file,由file...-N 不输出列信息 -B 使用tab键 代替 分隔符 -e 执行SQL语句 退出脚本 命令:exit 退出脚本使用不同错误码,这样可以根据错误码来判断发生了什么错误。

    1.6K01

    nodejs写bash脚本终极方案!

    ◆ 前言 最近在学习bash脚本语法,但是如果对bash语法不是熟手的话,感觉非常容易出错,比如说:显示未定义变量shell中变量没有定义,仍然是可以使用,但是它结果可能不是你所预期。...为了弥补这些错误,我们学会在脚本开头加入:set -u这句命令意思是脚本头部加上它,遇到不存在变量就会报错,并停止执行。...同步模式下,这将返回一个 ShellString #(与 ShellJS v0.6.x 兼容,它返回一个形式为 { code:..., stdout:..., stderr:... } 对象)。...很棒,但是在编写脚本,人们通常会选择更方便编程语言。...由于此类全局变量脚本中非常方便,因此 zx 提供了这些以 .mjs 文件中使用(当使用 zx 可执行文件) require也是commonjs中导入模块方法, ESM 模块中,没有定义 require

    3.9K20

    Shell脚本调试和错误处理(二)

    二、错误处理技术Shell脚本开发中,错误处理非常重要。错误处理可以帮助我们脚本出错及时发现问题,避免脚本出现不可预期行为。...脚本中,我们可以检查每个命令返回值,并在出现错误时采取相应处理措施。例如:#!/bin/bash# Error handling examplels /etc/passwdif [ $?...2.使用set -e命令set -e命令可以使脚本发生错误时立即停止执行。当set -e命令启用后,脚本会在执行任何一个命令失败立即退出,并返回一个非零退出码。例如:#!...脚本中,当执行ls /etc/passwd命令失败脚本会立即退出,并且不会执行后面的echo语句。...3.使用trap命令处理错误使用trap命令可以脚本执行过程中捕捉到各种信号,并在信号发生执行相应命令。我们可以使用trap命令来处理Shell脚本错误,以便于发生错误时执行相应操作。

    1.4K10

    shell脚本语言(超全超详细)

    shell脚本语言 1、shell概述 2、脚本调用形式 打开终端系统自动调用:/etc/profile 或 ~/.bashrc 3、shell语法初识 3.1、定义以开头:#!...指定解析器解析 bash xxx.sh:指明先用bash解析器解析 . xxx.sh 直接使用默认解析器解析(不会执行第一行#!...,我们只需使用任意文本编辑器,按照语法编写相应程序,增加可执行权限,即可在安装shell命令解释器环境下执行 2、脚本调用形式 打开终端系统自动调用:/etc/profile 或 ~/.bashrc....bashrc 登录时会自动调用,打开任意终端也会自动调用 这个文件一般设置与个人用户有关环境变量,如交叉编译器路径等等 用户手动调用:用户实现脚本 3、shell语法初识 3.1、...指定指定解析器不存在 才会使用系统默认解析器 bash xxx.sh:指明先用bash解析器解析 如果bash不存在 才会使用默认解析器 . xxx.sh 直接使用默认解析器解析(不会执行第一行#

    2.6K20
    领券