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

阅读数:115 评论数:0

跳转到新版页面

分类

Linux

正文

有3种方式:

1、fork

如果脚本有执行权限的话,path/to/foo.sh。如果没有,bash path/to/foo.sh

fork是最普通的,运行的时候,terminal会新开一个子shell执行脚本 foo.sh,子shell执行的时候,父shell还在,子shell执行完毕后返回父shell。子shell从父shell继承环境变量,但是子shell中的环境变量不会带回父shell。

2、exec

exec path/to/foo.sh

在当前同一个shell中执行,但是与source不同,使用exec调用一个新脚本以后,父脚本中exec行之后的内容就不会再执行了,即原有的进程会被结束

3、source

source path/to/foo.sh

不新开一个子shell,而是在当前同一个shell中执行,所以被调用的脚本中声明的变量和环境变量,都可以在主脚本中进行获取和使用。




相关推荐

一、echo   变量的显示必须要加上字符$ echo $variable echo ${variable} 二、变量的设置规则 1、变量与变量内容以一个等号来连接 2、等号两边不能直接接空格符 3、

#! /bin/bash # 功能: 根据用户输入的PID,过滤出该PID所有的信息 read -p "请输入要查询的PID: "

#! /bin/bash # 功能: 根据输入的程序的名字过滤出所对应的PID,并显示出详细信息,如果有几个PID,则全部显示

一、简介 if [ command ];then   符合该条件执行的语句elif [ command ];then&n

出现bad interpreter:No such file or directory(没有那个文件或目录)的原因,是文件格式的问题。这个文件是在Windows下编写的。换行的方式与Unix不一

$? 上个命令的退出状态,或函数的返回值。

一、切换用户执行大段命令 #!/bin/bash su - test <<EOF pwd; exit; EOF 二、执行一条命令 su - test -c "pwd" 三、执行一个shell脚本 su

yum remove mysql* -y yum remove mariadb* -y if [ -f "/e

vim /etc/rc.local #!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advis

在 Bash shell 中,type 是一个内置命令,用于显示指定命令的类型。它可以告诉你一个命令是内置的(built-in),还是一个外部的可执行程序,或者是别名(alias)、函数、关键字等。