#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
, что значение не задано, soPBS_ARRAYID
не задано, soi
становится пустой строкой,${files[$i]}
является пустым иoutput
нигде не объявляется в первую очередь.4. Можете ли вы описать вашу точную настройку с помощью дерева каталогов, нескольких примеров файлов и какие именно команды вы хотели бы, чтобы ваш сценарий Bash выполнялся?
5. Я понимаю это, но не зная, какие у вас каталоги и т.д. похоже, трудно понять, что именно должен делать ваш скрипт (см. Мой Предыдущий комментарий, чтобы узнать, как обновить ваш вопрос).