如何比较bash中的变量列表?

时间:2014-07-05 14:03:24

标签: bash variables compare difference

我试图保存由我的脚本修改的变量列表,以便以后使用set重新加载。

initialVars="`set -o posix ; set`"
source script
saveTime="$(date +"%Y-%m-%d %T")" #first time declaring this var
saveVars="`grep -vFe "$initialVars" <<<"$(set -o posix ; set)"| grep -v ^initialVars=`"
echo $saveVars > snapshot.sav
unset saveVars

乍一看这似乎工作正常,但我注意到snapshot.sav不包含很多变量,这些变量肯定已被脚本修改过,但在设置initialVars之前甚至还没有初始化。例如,它不包括saveTime。

我检查了initialVars的内容,尚未初始化的变量还没有,但是如果我在grepping之前查看(设置-o posix; set),则会出现。

greps有什么问题吗?我对bash很新,所以我可能没有看到什么。

很抱歉,如果我的问题有点复杂,我还没有很多编程故障排除经验。

1 个答案:

答案 0 :(得分:1)

添加-x选项,使其与整行匹配:

saveVars="`grep -vxFe "$initialVars" <<<"$(set -o posix ; set)"| grep -v ^initialVars=`"

也不需要saveVars变量。你可以这样做:

grep -vxFe "$initialVars" <<<"$(set -o posix ; set)"| grep -v ^initialVars= > snapshot.sav