Многострочная команда IDL из сценария оболочки - PullRequest
0 голосов
/ 28 января 2019

Мне интересно, как вызвать многострочную команду IDL из сценария оболочки.Например, для вызова однострочной команды idl_dummy.pro я могу сделать:

idl -e "idl_dummy"

У меня есть набор кодов, которые требуют большечем одна строка для выполнения в IDL.В рамках IDL мне нужно выполнить:

.comp /a_different_directory/idl_file.pro

ans = idl_dummy (123456)

Как я могу запустить этокод из сценария оболочки?

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Я обычно делаю что-то вроде этого

#!/bin/bash

read -r -d '' IDL_SCRIPT <<EOF
  .comp /a_different_directory/idl_dummy.pro

  ans = idl_dummy(123456)
  ; print, ans ;?
EOF

# Print the script out for debugging
echo "${IDL_SCRIPT}"
idl <<< "${IDL_SCRIPT}"

или

idl <<< \
  "!path = EXPAND_PATH('/a_different_directory/:' + !path) & \
  idl_dummy, 123456"

Возможно, вам придется поиграться с !path, чтобы автоматически скомпилировать нужный вам код.Я бы также рекомендовал назвать процедуру так, чтобы вам не приходилось вручную компилировать с .comp (как я и предлагал в ответе).

0 голосов
/ 29 января 2019

Поместите две команды в файл с расширением .pro, скажем, test_batch.pro.Это командный файл;он не может использовать begin / end блоки, но не нуждается ни в каком специальном синтаксисе.

Затем вызвать IDL как:

$ idl path/to/test_batch.pro
...