我有两个sh文件,分别是"main.sh"和"sub.sh"我想在"sub.sh"中返回变量的值并在 main.sh 中使用它。有很多"echo"命令,所以我不能只从文件中返回值 sub.sh。我只需要一个变量的值。这怎么可能?
main.sh
echo "start"
//how to get a variable from the sh below?
//dene=$(/root/sub.sh)
echo "finish"
sub.sh
echo "sub function"
a="get me out of there" // i want to return that variable from script
echo "12345"
echo "kdsjfkjs"
要"发送"变量,请执行以下操作:
echo MAGIC: $a
要"接收"它:
dene=$(./sub.sh | sed -n 's/^MAGIC: //p')
这样做是丢弃所有不以 MAGIC 开头的行:并在找到匹配项时打印该标记后面的部分。 你可以用你自己的特殊词代替MAGIC。
编辑:或者您可以通过"源"子脚本来做到这一点。 那是:
source sub.sh
dene=$a
这样做是在main.sh
的上下文中运行sub.sh
,就好像文本只是复制粘贴一样。 然后,您可以访问变量等。
main.sh
#!/bin/sh
echo "start"
# Optionally > /dev/null to suppress output of script
source /root/sub.sh
# Check if variable a is defined and contains sth. and print it if it does
if [ -n "${a}" ]; then
# Do whatever you want with a at this point
echo $a
fi
echo "finish"
sub.sh
#!/bin/sh
echo "sub function"
a="get me out of there"
echo "12345"
echo -e "kdsjfkjs"
exit 42
您可以在 sub.sh 中将变量导出到 shell 会话,并在稍后 main.sh 中捕获它。
sub.sh
#!/usr/bin/sh
export VARIABLE="BLABLABLA"
main.sh
#!/bin/sh
. ./sub.sh
echo $VARIABLE