Неопределенные переменные переходят от qsub к сценарию оболочки - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть такой скрипт, который я запускаю в терминале:

  for iter in 1
  do
    echo FullFilePath.sh $iter | qsub -V -e ~/pbs/ -o ~/pbs/
  done

В файле оболочки это выглядит так:

matlab -nosplash -singleCompThread -nojvm -r "a=${iter}"

Работает нормально до тех пор, пока не выполнит ошибку при выполнении кода Matlab, описанного выше, с ошибкой, что я неправильно использовал оператор '=': "a =". По существу, $ iter не был определен при запуске сценария matlab. Я пробовал так много версий и небольших изменений в приведенных выше строках кода, и это всегда ошибки ... был бы признателен за любую помощь.

1 Ответ

0 голосов
/ 11 сентября 2018

Вам необходимо export ваша iter переменная перед выполнением вашего скрипта.

export iter

Так что ваш скрипт может выглядеть так:

for iter in {1..5}
do
    export iter
    sh FullFilePath.sh $iter | qsub -V -e ~/pbs/ -o ~/pbs/
done

Или вы можете добавить строку в FullFilePath.sh, чтобы установить переменную для вашего аргумента ($1):

iter=$1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...