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

  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
Paul Scotti 11 Сен 2018 в 04:34

1 ответ

Лучший ответ

Перед выполнением скрипта вам необходимо 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
0
l'L'l 11 Сен 2018 в 01:50