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

1 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
Run Code Online (Sandbox Code Playgroud)

如果我

echo $GNUPLOT_CONF    
Run Code Online (Sandbox Code Playgroud)

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

echo "$GNUPLOT_CONF"   
Run Code Online (Sandbox Code Playgroud)

然后格式化是正确的但变量没有被替换(并且gnuplot失败)

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

SzG*_*SzG 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
Run Code Online (Sandbox Code Playgroud)

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

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]
Run Code Online (Sandbox Code Playgroud)

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