如何使用bash将变量存储在文件中?

时间:2011-05-11 14:17:42

标签: bash

我可以重定向输出然后捕获文件并grep / awk变量,但我想将此文件用于多个变量。

所以如果它是一个变量说STATUS那么我可以做一些像

这样的事情
echo "STATUS $STATUS" >> variable.file
#later perhaps in a remote shell where varible.file was copied
NEW_VAR=`cat variable.file | awk print '{$2}'`

我想用sed进行内联编辑会有所帮助。代码越小越好。

2 个答案:

答案 0 :(得分:8)

declare内置版在这里很有用

for var in STATUS FOO BAR; do
    declare -p $var | cut -d ' ' -f 3- >> filename
done

作为Brian says,稍后您可以source filename

declare非常棒,因为它会为你处理报价:

$ FOO='"I'"'"'m here," she said.'
$ declare -p FOO
declare -- FOO="\"I'm here,\" she said."
$ declare -p FOO | cut -d " " -f 3-
FOO="\"I'm here,\" she said."

答案 1 :(得分:7)

在文件中存储变量的一种常用方法是在文件中存储NAME=value行,然后将其输入到要获取变量的shell中。

echo 'STATUS="'"$STATUS"'"' >> variable.file
# later
. variable.file

在Bash中,您也可以使用source代替.,但这可能无法移植到其他shell。请仔细注意在文件中打印出正确的双引号所需的确切引号序列。

如果要将多个变量一次放入文件中,可以执行以下操作。对于引用扭曲的道歉,这需要做得恰当和便携;如果你限制自己使用Bash,你可以使用$""使引用更简单:

for var in STATUS FOO BAR
do
    echo "$var="'"'"$(eval echo '$'"$var")"'"'
done >> variable.file