有时会在一个shell脚本(如test_call_other_shell.sh)中调用另外一个shell脚本(如parameter_usage.sh),这里总结几种可行的方法,这些方法在linux上和windows上(通过Git Bash)均适用
      1.通过source: 运行在相同的进程,在test_call_other_shell.sh中调用parameter_usage.sh后,parameter_usage.sh中的变量和函数在test_call_other_shell.sh中可直接使用
      2.通过/bin/bash: 运行在不同的进程
      3.通过sh: 运行在不同的进程
      4.通过.: 运行在相同的进程,在test_call_other_shell.sh中调用parameter_usage.sh后,parameter_usage.sh中的变量和函数在test_call_other_shell.sh中可直接使用

parameter_usage.sh内容如下:

#! /bin/bash# 参数的使用# 我们可以在执行Shell脚本时,向脚本传递参数,脚本内获取参数的格式为:$n. n代表一个数字,1为执行脚本的第一个参数,2为执行脚本的第二个参数,以此类推if [ $# != 3 ]; thenecho "usage: $0 param1 param2 param3"echo "e.g: $0 1 2 3"exit 1
fiecho "执行文件名: $0"
echo "param1: $1"; echo "param2: $2"; echo "param3: $3"parameters=$*# 特殊字符用来处理参数
# $#: 传递到脚本的参数个数
echo "参数个数为: $#"
# $*: 以一个单字符串显示所有向脚本传递的参数
echo "传递的参数作为一个字符串显示: $*"
# $@: 与$*相同,但是使用时加引号,并在引号中返回每个参数
echo "传递的参数作为字符串显示: $@"for i in "$*"; do # 循环一次echo "loop"; echo $i
doneecho ""
for i in "$@"; do # 循环三次echo "loop"; echo $i
doneget_csdn_addr()
{echo "csdn addr: https://blog.csdn.net/fengbingchun/"
}

test_call_other_shell.sh内容如下:

#! /bin/bashparams=(source /bin/bash sh .)usage()
{echo "Error: $0 needs to have an input parameter"echo "supported input parameters:"for param in ${params[@]}; doecho "  $0 ${param}"doneexit -1
}if [ $# != 1 ]; thenusage
fiflag=0
for param in ${params[@]}; doif [ $1 == ${param} ]; thenflag=1breakfi
doneif [ ${flag} == 0 ]; thenecho "Error: parameter \"$1\" is not supported"usageexit -1
fiecho "==== test $1 ===="$1 parameter_usage.sh 1 2 3
echo "parameters: ${parameters}"
get_csdn_addr$1 parameter_usage 123
#ret=$?
#if [[ ${ret} != 0 ]]; then
#   echo "##### Error: some of the above commands have gone wrong, please check: ${ret}"
#   exit ${ret}
#fi
if [ $? -ne 0 ]; thenecho "##### Error: some of the above commands have gone wrong, please check"exit -1
fiecho "test finish"

在linux上的执行结果如下:

在windows上执行结果如下:

在linux下也可以将另外一个shell脚本所在的路径添加到$PATH环境变量,然后你就可以把它作为普通命令调用。

      GitHub: https://github.com/fengbingchun/Linux_Code_Test

shell脚本内调用另外一个shell脚本的几种方法相关推荐

  1. linux exec 脚本之家,详解Shell脚本中调用另一个Shell脚本的三种方式

    主要以下有几种方式: Command Explanation fork 新开一个子 Shell 执行,子 Shell 可以从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回给父 ...

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

    文章目录 一.Groovy 脚本中调用另外一个 Groovy 脚本 1.调用 evaluate 方法执行 Groovy 脚本 2.参数传递 二.完整代码示例 1.调用者 Groovy 脚本 2.被调用 ...

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

    先来说一下主要以下有几种方式: fork: 如果脚本有执行权限的话,path/to/foo.sh.如果没有,sh path/to/foo.sh. exec: exec path/to/foo.sh s ...

  4. linux shell脚本中调用另一个shell脚本

    先来说一下主要以下有几种方式: 1.fork: 如果脚本有执行权限的话,path/to/foo.sh.如果没有,sh path/to/foo.sh. 2.exec: exec path/to/foo. ...

  5. linux shell运行脚本,Linux shell脚本中调用另一个shell(exec、source、fork)

    在运行shell脚本时候,有三种方式来调用外部的脚本,exec(exec script.sh).source(source script.sh).fork(./script.sh) 1.exec(ex ...

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

    文章目录 一.绑定作用域 binding 变量分析 二.Binding 类 variables 成员分析 三.完整代码示例 1.调用者 Groovy 脚本 2.被调用者 Groovy 脚本 3.执行结 ...

  7. flask 调用python脚本_flaskpython脚本如何调用另一个flaskpython脚本

    我是新来的烧瓶-py2neo-pyhon-neo4j,所以我需要一些帮助 我有以下问题.运行/执行的main.py是视图.py我有另一个py脚本,其中我有一些表单的提交_data.html&g ...

  8. Windows下bat脚本中调用另一个bat脚本

    一.调用命令: call 要调用的脚本名 二.示例: XXX.bat @echo off set name=%~n0 echo 这是%name%脚本 echo 111开始111 echo %date: ...

  9. shell实例第19讲:一个脚本中调用另一个脚本的3种方法

    在Shell脚本中调用另一个脚本(3种方法) 准备:主脚本是second.sh,主脚本中调用first.sh 方法1:exec(1)执行方式:exec /home/weibo/shell_test/s ...

最新文章

  1. 一些你可能忽略的护牙小技巧
  2. python爬虫 小白轻松从0到1_如何从0到1,学习Python的流程【小白入门】
  3. matlab gui uiwaitbar,MATLAB GUI嵌入进度条(waitBar) | 学步园
  4. SCOM 2012知识分享-26:分布式部署要点总结
  5. hdu 1003 A + B Problem II 使用整型数组轻松实现大数求和
  6. c++类名字查找与类的作用域
  7. dirname和basename命令
  8. 【转】2.1.1 购买阿里云服务器(Ubuntu系统)
  9. python_递归原理
  10. linux命令——init 的使用用法
  11. 奇怪的车次,你信不信
  12. 微软拆分 VS Code 中 Python 扩展,部分功能可独立下载
  13. 【基础教程】基于matlab工具voicebox函数中文说明【含Matlab源码 032期】
  14. 有线异步通信原理_【对讲机的那点事】揭秘对讲机系统集群网关的应用原理
  15. 牛顿法求函数零点和极值点
  16. 2000坐标系xy坐标几位_2000坐标系(2000坐标系x和y坐标几位数)
  17. 1097: 计算平均成绩(函数专题)
  18. python对时间序列的DataFrame数据按时间段进行切分求和
  19. apk文件以及打包流程
  20. Android APT不能自动生成文件

热门文章

  1. 小米2恢复出厂设置(硬件格式化)
  2. 最强最全面的Hive SQL开发指南,超四万字全面解析!
  3. float 保留两位小数 php,怎么使float保留两位小数或多位小数
  4. 医美交易10个亿,月活677万,新氧逆势增长秘密是什么?
  5. 美通企业日报 | 爱彼迎招募5名南极科考志愿者;中金拟与腾讯成立合资技术公司...
  6. 七夕最浪漫的表白,最真挚的感情(Python代码实现)
  7. SAST 技术产品 CodeSense 通过信通院工具能力测试
  8. 为什么层次越高的人,计较的越少
  9. Zabbix监控系统系列之二 : 初始化配置
  10. 皮肤!推荐几款炫酷的IDEA皮肤!(建议收藏)