假设我有一个名为test.sh
的外壳/ bash脚本,其中包含:
#!/bin/bash
TESTVARIABLE=hellohelloheloo
./test2.sh
我的test2.sh
看起来像这样:
#!/bin/bash
echo ${TESTVARIABLE}
这不起作用。我不想把所有的变量都作为参数传递,因为imho这太夸张了。
有没有别的办法?
发布于 2017-04-08 00:57:48
在Bash中,如果使用如下所示的括号在子shown中导出变量,则可以避免泄漏导出的变量:
#!/bin/bash
TESTVARIABLE=hellohelloheloo
(
export TESTVARIABLE
source ./test2.sh
)
这样做的好处是,从命令行运行脚本后,您不会看到$TESTVARIABLE泄漏到您的环境中:
$ ./test.sh
hellohelloheloo
$ echo $TESTVARIABLE
#empty! no leak
$
发布于 2016-08-25 03:37:13
另一种方法是使用命名管道,这对我来说更容易一些。命名管道提供了一种在不同进程之间同步和发送消息的方法。
A.bash:
#!/bin/bash
msg="The Message"
echo $msg > A.pipe
B.bash:
#!/bin/bash
msg=`cat ./A.pipe`
echo "message from A : $msg"
用法:
$ 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将继续其工作。
https://stackoverflow.com/questions/9772036
复制相似问题