如何从 shell 脚本返回特定变量的值?



我有两个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

相关内容

  • 没有找到相关文章

最新更新