首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否将所有变量从一个shell脚本传递到另一个shell脚本?

是否将所有变量从一个shell脚本传递到另一个shell脚本?
EN

Stack Overflow用户
提问于 2012-03-19 22:30:24
回答 2查看 289.3K关注 0票数 234

假设我有一个名为test.sh的外壳/ bash脚本,其中包含:

代码语言:javascript
复制
#!/bin/bash

TESTVARIABLE=hellohelloheloo
./test2.sh

我的test2.sh看起来像这样:

代码语言:javascript
复制
#!/bin/bash

echo ${TESTVARIABLE}

这不起作用。我不想把所有的变量都作为参数传递,因为imho这太夸张了。

有没有别的办法?

EN

回答 2

Stack Overflow用户

发布于 2017-04-08 00:57:48

在Bash中,如果使用如下所示的括号在子shown中导出变量,则可以避免泄漏导出的变量:

代码语言:javascript
复制
#!/bin/bash

TESTVARIABLE=hellohelloheloo
(
export TESTVARIABLE    
source ./test2.sh
)

这样做的好处是,从命令行运行脚本后,您不会看到$TESTVARIABLE泄漏到您的环境中:

代码语言:javascript
复制
$ ./test.sh
hellohelloheloo
$ echo $TESTVARIABLE
                            #empty! no leak
$
票数 8
EN

Stack Overflow用户

发布于 2016-08-25 03:37:13

另一种方法是使用命名管道,这对我来说更容易一些。命名管道提供了一种在不同进程之间同步和发送消息的方法。

A.bash:

代码语言:javascript
复制
#!/bin/bash
msg="The Message"
echo $msg > A.pipe

B.bash:

代码语言:javascript
复制
#!/bin/bash
msg=`cat ./A.pipe`
echo "message from A : $msg"

用法:

代码语言:javascript
复制
$ mkfifo A.pipe #You have to create it once
$ ./A.bash & ./B.bash # you have to run your scripts at the same time

B.bash将等待消息,一旦A.bash发送消息,B.bash将继续其工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9772036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档