泷羽sec学习--Shell编程之不同脚本互相调用

学习内容来自B站UP:泷羽sec

微信公众号:泷羽sec

1.source​命令调用
  • 基本原理

    • ​source​命令(也可以使用点号 “.” 来代替,如. script.sh​)在当前 Shell 环境下执行脚本。这意味着被调用脚本中的变量、函数定义和环境设置等会直接影响到当前 Shell 环境。
  • 示例场景

    • 假设有两个脚本script1.sh​和script2.sh​。script1.sh​内容如下:

      #!/bin/bash
      var1="Value is script1"
      function func1() {
          echo "Function in script1"
      }
      
    • 若script2.sh​需要调用script1.sh​并使用其中的变量和函数,可以这样写:

      #!/bin/bash
      source script1.sh
      echo $var1
      func1
      
      • 当执行script2.sh​时,会输出Value is script1​,然后输出Function in script1​。这是因为source​命令使得script1.sh​中的变量和函数在script2.sh​的环境中可用。
2.bash​命令调用
  • 基本原理

    • ​bash script.sh​会开启一个新的子 Shell 来执行脚本。在子 Shell 中定义的变量、函数等在子 Shell 结束后(即被调用脚本执行完毕)通常不会影响到调用脚本所在的父 Shell 环境。
  • 示例场景

    • 假设script3.sh​内容为:

      #!/bin/bash
      var2="Value is script3"
      echo $var2
      
    • ​script4.sh​调用script3.sh​如下:

      #!/bin/bash
      bash script3.sh
      echo $var2
      
      • 当执行script4.sh​时,会先输出Value is script3​,然后输出一个空行。因为var2​是在script3.sh​所在的子 Shell 中定义的,在script4.sh​所在的父 Shell 中无法访问这个变量。
3.封装函数
  • 基本原理

    • 把要调用的脚本内容改写为函数形式,然后在另一个脚本中通过source​等方式加载函数定义,并进行函数调用。这种方式可以更好地控制脚本的执行,并且方便传递参数。
  • 示例场景

    • 例如,有一个脚本script5.sh​,原始内容为:

      #!/bin/bash
      echo "This is script5"
      
    • 将其改写为函数形式:

      #!/bin/bash
      function script5_func() {
          echo "This is script5"
      }
      
    • 另一个脚本script6.sh​要调用这个函数,可以这样写:

      #!/bin/bash
      source script5.sh
      script5_func
      
4.直接调用(适用于可执行脚本)
  • 基本原理

    • 如果脚本有可执行权限(通过chmod u+x script.sh​设置),可以使用脚本的绝对路径或相对路径来执行它。这在一定程度上也实现了脚本之间的调用。
  • 示例场景

    • 假设script7.sh​和script8.sh​在同一目录下,script7.sh​是可执行脚本,内容如下:

      #!/bin/bash
      echo "This is script7"
      
    • ​script8.sh​要调用script7.sh​可以写为:

      #!/bin/bash
      ./script7.sh
      
      • 这里./​表示当前目录。如果脚本没有可执行权限,会出现权限错误,需要先添加执行权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值