Я работаю с очередью PBS на сервере.Я хочу отправить несколько заданий автоматически и поэтому должен заменить переменную путем.Поскольку невозможно получить аргументы в работающем скрипте, работающем с очередью, я хочу заменить переменные оболочки, которые обычно используются, жестко закодированными параметрами.
Мне нужно:
#! /bin/sh
#PBS -N runme_$file
#PBS -o $file.out
#PBS -e $file..err
#PBS -q batch
#PBS -j oe
#PBS -m abe
#PBS -r n
#PBS -l nodes=1:ppn=1
#PBS -l walltime=24:00:00
/home/example/proggie script $file $parameter2
echo "DONE"
замена $ file на '/ tmp / output', поэтому его следует преобразовать в:
#! /bin/sh
#PBS -N runme_/tmp/output
#PBS -o /tmp/output.out
#PBS -e /tmp/output.err
#PBS -q batch
#PBS -j oe
#PBS -m abe
#PBS -r n
#PBS -l nodes=1:ppn=1
#PBS -l walltime=24:00:00
/home/example/proggie script /tmp/output $parameter2
/home/example2/proggie2 /tmp/output
echo "DONE"
PBS-часть важна, поскольку она препятствует использованию параметров.Поэтому я не могу просто использовать $ 1 и $ 2 и дать сценарию необходимые параметры с помощью аргументов.Вместо этого мне нужно изменить файл с помощью команды замещения, затем я могу отправить его в систему очередей.Я все еще хочу иметь возможность использовать скрипт из командной строки для быстрого тестирования.
Я уже пытался использовать sed, но возможность появления специальных символов в файле все испортило.Должен быть лучший способ.