BASH:保持格式化但替换变量

时间:2013-09-12 18:08:55

标签: bash gnuplot

我想使用here文档在我的bash脚本中存储gnuplot的配置文件,但是我需要能够在保持回车的同时替换bash变量。

以下是我正在使用的摘录:

read -r -d '' GNUPLOT_CONF << 'EOF'
set terminal pngcairo enhanced font 'Verdana, 10'
set title "This is a test"
set xrange [$SMALLEST:$LARGEST]
EOF

如果我

echo $GNUPLOT_CONF    

然后变量被正确替换但是所有回车被剥离(因此gnuplot无法执行它)并且如果我

echo "$GNUPLOT_CONF"   

然后格式化正确,但变量未被替换(并且gnuplot失败)

gnuplot命令设置为变量,但是所有特殊字符(如引号)都需要转义。有没有一个快乐的媒体使用这里的文档,使代码更容易阅读。

1 个答案:

答案 0 :(得分:7)

只需删除'EOF'

中的引号即可
read -r -d '' GNUPLOT_CONF << EOF
set terminal pngcairo enhanced font 'Verdana, 10'
set title "This is a test"
set xrange [$SMALLEST:$LARGEST]
EOF

当我尝试时,您的原始代码和更改后的代码仅在替换时有所不同:

set terminal pngcairo enhanced font 'Verdana, 10' set title "This is a test" set xrange [$SMALLEST:$LARGEST]
set terminal pngcairo enhanced font 'Verdana, 10' set title "This is a test" set xrange [1:9]

有趣的事实:当您删除引号时,vim会立即更改语法高亮显示,并在此处的文档中突出显示变量替换。