Ваш разделитель между каталогом и именем файла /
, поэтому я предполагаю, что вы работаете в Linux. Вот следующие работы:
- Если gnuplot запускается со сценарием для выполнения, то существует переменная
ARG0
, которая содержит полное имя сценария, указанное в командной строке.
- С помощью вызова
system
мы можем отправить это имя сценария обратно в оболочку, которая имеет команду dirname
для извлечения части каталога имени сценария.
- Теперь мы можем использовать внутренние строковые функции gnuplot для построения путей к файлам, особенно
.
, который объединяет две строки.
Вы сказали, что у вас есть скрипт gnuplot folder/script.gp
и файл данных folder/data.txt
, тогда скрипт должен содержать что-то вроде этого:
print ARG0 # just for debugging
working_directory = system("dirname ".ARG0)."/"
datafile = working_directory."data.dat"
outputfile = working_directory."graph.png"
print datafile # just for debugging
print outputfile # just for debugging
set terminal pngcairo
set output outputfile
plot datafile w l
Это также работает, если вы находитесь в «папке», тогда dirname
возвращает .
, и результирующий файл данных будет ./data.dat
. Я не проверял «специальные» имена каталогов, содержащие пробелы, ... я не ожидал, что это сработает.
Протестировано с gnuplot 5.0.5 на Debian 9.6, gnuplot использует оболочку sh для system
. Я не искал решение для Windows.