传递变量从一个脚本到另一个shell脚本
问题描述:
我有一个脚本假设script.sh 它有两个脚本里面传递变量从一个脚本到另一个shell脚本
sh script1.sh &
sh script2.sh &
wait;
echo $var1
echo $var2
我想这两个变量(VAR1,VAR2)parallaly运行印刷在运行script.sh
cat script1.sh
var1=1;
export $var1
cat script2.sh
var1=1;
export $var1
答
事情浮现在脑海:
-
如果你使用bash,您可以使用点运行脚本:
.script1.sh
它会在同一个环境中运行的脚本,所以你可以修改“调用”的环境变量脚本。
-
如果它是一个单一的输出数据时,可以只打印到内脚本和截距在外部脚本的标准输出:
inner_result =`script1.sh`
如果它是一个数值,可以返回它作为脚本的退出代码(但是我不推荐这种方法,因为它是在脚本开发一种不好的做法)
编辑:
- 使用临时文件来存储结果,然后将其删除(但取决于操作系统,命名的队列可能是最好的专用溶液)
答
这可以与在bash 4.x版协进程完成后,如果你的script1
和script2
写的变量到stdout:
#!/usr/bin/env bash
# ^^^- Must be bash, not /bin/sh; must NOT start this script with "sh name".
start_seconds=$SECONDS
run_script1() { sleep 5; echo "one"; } # replace these with your script1 or script2
run_script2() { sleep 5; echo "two"; }
coproc coproc_script1 { run_script1; }
coproc coproc_script2 { run_script2; }
read -u "${coproc_script1[0]}" var1
read -u "${coproc_script2[0]}" var2
echo "End time: $((SECONDS - start_seconds)); var1=$var1; var2=$var2"
如果数值进行平行不运行,您End time
将是10个或更多。相反,它应该在实践中是5
或6
以上代码。
它是否严格定义它应该运行哪个shell解释器/操作系统或解决方案应该是可移植的? – mpasko256
unix bash shell @ mpasko256 – abhisek
不是它的某种副本 https://*.com/questions/42067435/how-to-return-a-variable-from-one-shell-script-to-another -script?rq = 1 问题? – mpasko256