采购ENV输出(sourcing env output)

2019-07-21 01:14发布

我有一些shell代码我需要调试,所以我的代码抛售其环境到一个文件

env > env.txt

并与我的测试脚本,我想它来源,test.sh:

. ./env.txt
echo $EXAMPLE
echo $EXAMPLE2

env.txt的内容是:

EXAMPLE=sh /hello/command.sh
EXAMPLE2=/just/some/path

但是,ENV不把围绕其价值,这往往会造成对$例一问题引号,我得到这个错误

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

那么清楚它正试图去运行它设置变量。

你怎么找到的是这个问题的解决方法最快?

Answer 1:

while read line; do
    declare "$line"
    # declare -x "$line"
    # export "$line"
done < env.txt

如果您想要的值导出到环境中,使用-x选项来declare或使用export命令。



Answer 2:

输出重定向到文件前添加双引号:

env | sed 's/=\(.*\)/="\1"/' > env.txt


Answer 3:

while read line; do
 var="${line%=*}"
 value="${line##*=}"
 eval "$var=\"$value\""
done <env.txt


文章来源: sourcing env output