采购环境输出

pax*_*mus 5 linux bash shell sh

我有一些shell代码需要调试,因此我将代码转储了其环境到文件中

env > env.txt
Run Code Online (Sandbox Code Playgroud)

并使用我的测试脚本来获取它的源代码test.sh:

. ./env.txt
echo $EXAMPLE
echo $EXAMPLE2
Run Code Online (Sandbox Code Playgroud)

env.txt的内容是:

EXAMPLE=sh /hello/command.sh
EXAMPLE2=/just/some/path
Run Code Online (Sandbox Code Playgroud)

但是,env不会在其值两边加上引号,这往往会导致$ EXAMPLE出现问题,我收到此错误

test.sh:/hello/command.sh:未找到

很明显,它试图运行它而不是设置变量。

您发现此问题最快的解决方法是什么?

che*_*ner 7

while read line; do
    declare "$line"
    # declare -x "$line"
    # export "$line"
done < env.txt
Run Code Online (Sandbox Code Playgroud)

如果要将值导出到环境,请使用 选项-xdeclare使用export命令。


Ans*_*ers 5

在将输出重定向到文件之前,请添加双引号:

env | sed 's/=\(.*\)/="\1"/' > env.txt
Run Code Online (Sandbox Code Playgroud)