采购env输出

时间:2013-03-05 22:54:20

标签: linux bash shell sh

我有一些我需要调试的shell代码,所以我将代码转储到文件

env > env.txt

并且我的测试脚本是我想要的,test.sh:

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

env.txt的内容是:

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

但是,env不会在其值周围加上引号,这会导致$ EXAMPLE的问题,我收到此错误

test.sh:/hello/command.sh:not found

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

你发现什么是这个问题最快的解决方法?

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

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