Я работаю в исследовательской группе, и мы используем систему очередей PBS. Я не являюсь мастером PBS, но я хотел написать сценарий поиска, если задание выполняется. Чтобы сделать это, я сначала собираю строку всех заданий, используя результаты вызова qstat в качестве аргумента для qstat -f, а затем получаю подробный список всех заданий и ищу его по указанному пути файла. Текущий кладж выглядит следующим образом
dump=`qstat -f `qstat``
if grep -q \
"/${compounds[$i]}/D0_${j}_z_$((k*30))/scripts/jobscript_minim" \
<<<$dump; then
echo "Minimize is running!"
fi
Предложения по улучшению?
Также мне сказали, что $ () чище, чем ``. Но когда я пытаюсь:
dump="$(qstat -f "$(qstat)")"
... моя программа не работает. Почему это? Я неправильно понимаю, как вкладывать вызовы оболочки с помощью $ () ?? Или это как-то связано с тем, как я передаю список заданий очереди из qstat в qstat -f? Должен ли я использовать awk или что-то еще, чтобы получить задания из команды qstat, а затем как-то передать их как аргументы qstat -f?
Также я должен использовать рекурсивный grep? Некоторые люди говорят мне, что это «разумнее», но я не уверен, что это значит. Это более портативный? Это быстрее? Нужно ли меньше посещений терапевта?
Какова причина, по которой вы должны его использовать?