我想使用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命令设置为变量,但是所有特殊字符(如引号)都需要转义。有没有一个快乐的媒体使用这里的文档,使代码更容易阅读。
答案 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会立即更改语法高亮显示,并在此处的文档中突出显示变量替换。