1

我想使用此处的文档在我的 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 命令可以设置为变量,但所有特殊字符(如引号)都需要转义。是否有使用此处文档的快乐媒介,它使代码更易于阅读。

4

1 回答 1

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]

有趣的事实:当您删除引号并突出显示 here doc 中的变量替换时,vim 会立即更改语法突出显示。

于 2013-09-12T18:19:58.763 回答