Написание сценария оболочки для запуска Rscript для нескольких файлов в каталоге

#bash

#баш

Вопрос:

У меня есть один Rscript, который я хочу запустить для 100 файлов в каталоге, для этого я создаю файл .sh в bash.

Rscript run_data.R <inputfile> <outputroot>

Но вместо одного входного файла мне нужно создать скрипт, который будет перебирать Rscript по 100 файлам, которые у меня есть в каталоге.

Я пробовал это:

 #!/bin/bash
#
#
#PBS -t 0-99
#PBS -l nodes=1:ppn=2,walltime=200:00:00
# Change into working directory
# Execute code
#Set -e allows you to test the script
set -e

echo "Running on ${HOSTNAME}"
if [ -n "${1}" ]; then
  echo "${1}"
  PBS_ARRAYID=${1}
fi

i=${PBS_ARRAYID}

files=("/mydirectory/")
echo ${files[$i]}

output=${output[$i]}

Rscript run_data.R ${files[$i]} ${output[$i]} 
 

Но это, похоже, не работает, он говорит Execution halted и не запускает Rscript.

Любые предложения были бы потрясающими

Спасибо!

Комментарии:

1. Как вы запускаете этот скрипт? В частности, что в $1 ?

2. Rscript run_data.R <inputfile> <outputroot> это то, что я ввожу в bash для запуска R-скрипта, 1 доллар — это просто для тестирования скрипта. Мне просто нужно установить входной файл так, чтобы в нем были все файлы в каталоге, а на выходе каждый файл будет называться отдельно

3. Это означает $1 , что значение не задано, so PBS_ARRAYID не задано, so i становится пустой строкой, ${files[$i]} является пустым и output нигде не объявляется в первую очередь.

4. Можете ли вы описать вашу точную настройку с помощью дерева каталогов, нескольких примеров файлов и какие именно команды вы хотели бы, чтобы ваш сценарий Bash выполнялся?

5. Я понимаю это, но не зная, какие у вас каталоги и т.д. похоже, трудно понять, что именно должен делать ваш скрипт (см. Мой Предыдущий комментарий, чтобы узнать, как обновить ваш вопрос).