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

在 Shell 脚本中调用另一个 Shell 脚本的三种方式

被调用的脚本与父脚本在同一个 Shell 内执行。但是使用 exec 调用一个新脚本以后, 父脚本中 exec 行之后的内容就不会再执行了。...这是 exec 和 source 的区别. source 与 fork 的区别是不新开一个子 Shell 来执行被调用的脚本,而是在同一个 Shell 中执行....所以被调用的脚本中声明的变量和环境变量, 都可以在主脚本中进行获取和使用。 其实从命名上可以感知到其中的细微区别,下面通过两个脚本来体会三种调用方式的不同: 第一个脚本,我们命名为 1.sh: #!...exec 在同一个 Shell 内执行,但是父脚本中 exec 行之后的内容就不会再执行了 source 在同一个 Shell 中执行,在被调用的脚本中声明的变量和环境变量, 都可以在主脚本中进行获取和使用...参考: 在shell脚本中调用另一个脚本的三种不同方法(fork, exec, source)

4.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Shell脚本调用另一个脚本的三种方法

    Shell脚本中调用first.sh呢?...first file 4.三者的区别 使用source命令和点号.是等价了,类似于C/C++中的#include预处理指令,都是将指定的脚本内容拷贝至当前的脚本中,由一个Shell进程来执行。...使用sh命令来调用另外的脚本和前面两种方法有着本质的区别。使用sh命令则会开启新的Shell进程来执行指定的脚本,这样的话,父进程中的变量在子进程中就无法访问。...first file second: lvlv your are in first file second: lvlv your are in first file second: 可见,使用sh命令开启一个子进程来调用指定的...(3)全局变量:在脚本中定义,仅在当前Shell脚本中有效,其他Shell脚本进程不能访本,其作用域从定义的位置开始,到脚本结束或被显示删除的地方为止。

    12.2K50

    【Groovy】Groovy 脚本调用 ( Groovy 脚本中调用另外一个 Groovy 脚本 | 调用 evaluate 方法执行 Groovy 脚本 | 参数传递 )

    文章目录 一、Groovy 脚本中调用另外一个 Groovy 脚本 1、调用 evaluate 方法执行 Groovy 脚本 2、参数传递 二、完整代码示例 1、调用者 Groovy 脚本 2、被调用者...Groovy 脚本 3、执行结果 一、Groovy 脚本中调用另外一个 Groovy 脚本 ---- 1、调用 evaluate 方法执行 Groovy 脚本 在 【Groovy】Groovy 脚本调用...( Groovy 脚本编译 | Groovy 脚本字节码文件分析 ) 博客中 , 已经分析了 Groovy 脚本的本质 , Groovy 脚本继承了 groovy.lang.Script 类 ; 调用...Groovy 脚本都在同一个目录中 ; 在 Groovy 脚本中调用如下代码 , 即可执行另外一个 Groovy 脚本 Script.groovy ; evaluate(new File("Script.groovy..." args[1] = "arg1" 这样在被调用的 Groovy 脚本中 , 就可以获取 上述 args 参数 ; 二、完整代码示例 ---- 1、调用者 Groovy 脚本 // 要传入的参数 args

    1.9K40

    【Groovy】Groovy 脚本调用 ( Groovy 脚本中调用另外一个 Groovy 脚本 | 绑定作用域 binding 变量分析 | Binding 类 variables 成员分析 )

    文章目录 一、绑定作用域 binding 变量分析 二、Binding 类 variables 成员分析 三、完整代码示例 1、调用者 Groovy 脚本 2、被调用者 Groovy 脚本 3、执行结果...一、绑定作用域 binding 变量分析 ---- 分析 groovy.lang.Script 类的 evaluate 方法源码 , 在该方法中 , 创建了一个 GroovyShell 对象 ; 在创建时...; /** * 表示脚本的变量绑定,可以从脚本对象外部进行更改,也可以在脚本外部创建并传递到脚本中。...*/ public class Binding extends GroovyObjectSupport { private Map variables; } 在被调用的 Groovy 脚本中 ,...- 1、调用者 Groovy 脚本 // 要传入的参数 args = [] args[0] = "arg0" args[1] = "arg1" // 调用 Script.groovy 脚本 evaluate

    1.2K20

    如何在 Linux 中运行一个 Shell 脚本

    不要担心,我将使用示例来进行必要的解释,以便你能理解为什么在运行一个 shell 脚本时要使用给定的特定语法格式。...在 Linux 中运行一个 Shell 脚本 记住,将其作为参数传递的需要是一个 shell 脚本。一个 shell 脚本是由命令组成的。如果你使用一个普通的文本文件,它将会抱怨错误的命令。.../script.sh 如果你与你的脚本不在同一个目录中,你可以具体指定脚本的绝对路径或相对路径: 在其它的目录中运行 Shell 脚本 在脚本前的这个 ./ 是非常重要的(当你与脚本在同一个目录中)。.../bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin 这意味着在下面目录中具有可执行权限的任意文件都可以在系统的任何位置运行...这就是为什么你可以在你系统的任何位置通过使用命令的名称来运作这些命令的原因。看看,ls 命令就是位于 /usr/bin 目录中。

    3.5K20

    【Groovy】Groovy 脚本调用 ( Groovy 脚本中的作用域 | 本地作用域 | 绑定作用域 )

    文章目录 一、Groovy 脚本中的作用域 ( 本地作用域 | 绑定作用域 ) 二、Groovy 脚本中的作用域代码示例 一、Groovy 脚本中的作用域 ( 本地作用域 | 绑定作用域 ) ----...在 Groovy 脚本中 , 定义两个变量 , 一个使用 def 声明 , 一个直接声明变量 ; def age = "18" age2 = "16" println "$age , $age2" 上面的...共有变量 ; 声明一个方法 , 在下面的函数中 , 可以使用 绑定作用域变量 , 不能使用 本地作用域变量 ; =/* 定义一个函数 在下面的函数中 , 可以使用 绑定作用域变量...错误 ; 二、Groovy 脚本中的作用域代码示例 ---- 代码示例 : 注意 , 此时代码中有错误 , println "$age" 代码 , 中的 age 是本地作用域变量 , 在函数中无法访问到...一个是私有变量 , 一个是共有变量 */ def age = "18" age2 = "16" println "$age , $age2" /* 定义一个函数 在下面的函数中

    1.3K20

    如何在Excel中调用Python脚本,实现数据自动化处理

    这就是本文要讲到的主题,Python的第三方库-xlwings,它作为Python和Excel的交互工具,让你可以轻松地通过VBA来调用Python脚本,实现复杂的数据分析。...xlwings和插件都安装好后,这时候打开Excel,会发现工具栏出现一个xlwings的菜单框,代表xlwings插件安装成功,它起到一个桥梁的作用,为VBA调用Python脚本牵线搭桥。...三、玩转xlwings 要想在excel中调用python脚本,需要写VBA程序来实现,但对于不懂VBA的小伙伴来说就是个麻烦事。...但xlwings解决了这个问题,不需要你写VBA代码就能直接在excel中调用python脚本,并将结果输出到excel表中。...: 1、在.xlsm文件相同位置查找相同名称的.py文件 2、调用.py脚本里的main()函数 我们先来看一个简单的例子,自动在excel表里输入['a','b','c','d','e'] 第一步

    3.9K30

    C代码中如何使用链接脚本中定义的变量?

    mod=viewthread&tid=16231 在链接脚本中,经常有这样的代码: SECTIONS { ..... . = ALIGN(4); .rodata : { *(.rodata) } ....原因: 一,在C代码中,这样的语句: int foo = 1000; 会导致2件事情发生: 在代码中,留出4字节的空间,保存数值1000 在C语言的symbole talbe,即符号表中,有一个名为foo...二,在链接脚本中,假设 __bss_start = 1000 __bss_start并不是一个变量,它只是一个值,并不需要在内存中留出一段空间来保存它; 在C语言中,符号表中会有一个名为__bss_start...所以:在C语言中,要去使用链接脚本中定义的值时,应该这样做: extern int __bss_start; int val = &__bss_start; 使用取址符号&去得到它在符号表中的值。...注意,这个值只是链接脚本中定义的值,并不表示某个变量的地址。

    4.1K20

    cmd - 如何在bat文件中调用另一个bat文件

    情景一:两个bat文件在同一个目录下 有时候我们需要在一个bat文件中调用另一个bat文件,比如我们想在a.bat中调用b.bat,如下。...在cmd窗口中执行a.bat,结果如下: 1 2 3 4 I am a.bat... now run the b.bat I am b.bat... over 通过call命令,我们可以调用另一个bat...但是这里有个问题,就是两个bat文件必须在同一个目录下,否则会找不到要call的bat文件。...情景三:开启一个新的cmd窗口来运行另一个bat文件 假如我们希望另外启动一个新的cmd窗口来运行b.bat,可以通过start cmd命令来实现,如下: a.bat 1 2 3 4 5 6 @echo.../k是表示新打开的cmd窗口在执行完命令后保存打开状态,如果希望执行完就关闭窗口就使用/c call b.bat表示call命令,即调用b.bat文件;该命令可以用""括起来,即:"call b.bat

    4.1K20

    如何处理Shell脚本中的特殊字符

    在本教程中,我们将介绍有关处理 shell 脚本中特殊字符的最常见用例。首先,我们将讨论 shell 脚本中的包装命令和变量替换。 然后,我们将处理包含特定前缀的文件名。...最后,我们将看到Shellcheck实用程序的运行情况,以及我们如何使用它来确保我们的脚本没有任何警告。 2....用法 我们将编写一个简单的 shell 脚本,将我们的 IP 地址从一个变量打印到屏幕上: #!/bin/sh greeting="Hello!...七、结论 在本文中,我们讨论了如何处理 shell 中的特殊字符和空格。我们编写了各种小型 shell 脚本来演示针对不同用例的不同方法。...最后,我们介绍了shellscheck静态分析工具以及它如何帮助我们成为更好的 shell 脚本开发人员。

    7.9K30

    【Groovy】闭包 Closure ( 闭包中调用 Groovy 脚本中的方法 | owner 与 delegate 区别 | 闭包中调用对象中的方法 )

    文章目录 一、闭包中调用 Groovy 脚本中的方法 二、owner 与 delegate 区别 三、闭包中调用 Groovy 对象中的方法 一、闭包中调用 Groovy 脚本中的方法 ---- 在 Groovy...脚本中 , 在 Closure 闭包中 , 可以直接调用 Groovy 脚本中定义的方法 ; def fun() { println "fun" } def closure = {..., 这是无法改变的 ; 但是 Closure 闭包对象的 delegate 成员是可以修改的 ; 三、闭包中调用 Groovy 对象中的方法 ---- 在闭包中 , 可以直接调用 Groovy 脚本中定义的方法...; 但是如果想要在闭包中 , 调用实例对象的方法 , 就必须设置闭包的 delegate 成员 ; 如下代码中 , 想要在闭包中 , 调用 Test 对象的 fun 方法 , 在执行闭包之前 , 必须将...} } // 闭包中不能直接调用 Test 对象中的方法 // 此时可以通过改变闭包代理进行调用 def closure = { fun() } closure.delegate = new

    3.1K20

    linux: 如何高效处理Shell脚本中的大量参数

    在编写Shell脚本时,我们常常需要处理大量的参数。为了提高代码的可读性和可维护性,我们需要一些技巧来高效地管理这些参数。本文将探讨几种有效的方法,帮助我们简化Shell脚本中的参数处理。...位置参数的限制 在Shell脚本中,位置参数用于传递给脚本或函数的参数。位置参数有一定的限制: 直接使用的限制:位置参数 1 到 9 是直接可用的。.../bin/bash echo "参数1: $1" echo "参数2: $2" # 如果有超过9个参数 echo "参数10: ${10}" echo "所有参数: $@" 方法一:使用数组 使用数组可以简化参数的传递和处理...} set_sentinel_conf "$@" 方法三:使用配置文件 将所有参数放入配置文件中,然后在脚本中读取配置文件。...print_message "This is a test with spaces" 结论 在Shell脚本中处理大量参数时,可以选择使用数组、键值对、配置文件或全局变量来简化参数的管理。

    35510
    领券