GNUPLOT, здесь-документы и аргументы командной строки

В любой оболочке POSIX:

var=123.444.888.235
new_var="${var%.*}.0"

$ {var% pattern} - это оператор, представленный ksh в 80-х годах, стандартизированный POSIX для стандартного языка sh и теперь реализованный всеми оболочками, которые интерпретируют этот язык, включая bash .

$ {var% pattern} расширяется до содержимого $ var без самой короткой строки, которая соответствует шаблону в конце (или к тому же самому, что и $ var , если этот шаблон не соответствует). Итак, $ {var%. *} (где . * - шаблон , который означает точку, за которой следует любое количество символов) заменяется на $ var без крайнего правого . и что за ним следует. Напротив, $ {var %%. *} , где удаляется самая длинная строка , соответствующая шаблону, будет расширяться до $ var без крайнего левого . и что за ним следует.

0
08.08.2018, 09:29
2 ответа

Это одно из решений :избавиться от аргументов и выполнить замену вручную.

#!/bin/bash
#set up code in here...
gnuplot <<- EOF
do for [j=0:${first}] {
   do for [i=4:${second}] {
      plot '${data}' index j using 2:i with lp
   }
}
EOF
0
28.01.2020, 02:42

Вы можете попробовать что-то вроде:

gnuplot -c /dev/stdin "$first" "$second" <<-EOF
do for [j=0:ARG1] {
   do for [i=4:ARG2] {
      plot '${data}' index j using 2:i with lp
   }
}
EOF

Gnuplot жалуется

line 4: No previous filename

но затем я получаю ту же ошибку при использовании файла сценария, так что, вероятно, это как-то связано с неполным кодом.

1
28.01.2020, 02:42

Теги

Похожие вопросы