Аргумент передачи сценарию, затем перенаправьте сценарий, как введено к bsub

Ctrl+x bEnter изменится между последними двумя файлами.

Перейти к любому буферу, имя которого запускается с xy используйте Ctrl+bxyTABEnter

Перечислять буферы: Ctrl+xCtrl+b, используйте Ctrl+x1 для избавлений от окна с несколькими панелями.

4
16.07.2016, 02:01
2 ответа

Кажется, применение аргумента командной строки к bsub-файлу - очень сложный процесс. Я попробовал метод HEREDOC, указанный mikeserv, но bsub действовал так, как если бы имя файла сценария было командой. Так что самый простой способ обойти эту проблему - вообще не использовать перенаправление ввода.

Поскольку мой вопрос касался конкретно bsub для Platform LSF, вероятно, следующий способ решения проблемы с аргументами такого рода является лучшим: Чтобы передать аргумент сценарию для запуска в bsub, сначала укажите все аргументы bsub в командной строке, а не в файле сценария. Затем, чтобы запустить файл сценария, используйте

"sh script.sh [arg]"

после всех аргументов bsub. Таким образом, вся строка будет выглядеть примерно так:

bsub -q [queue] -J "[name]" -W 00:10 [other bsub args] "sh script.sh [script args]"

В этом случае лучше не использовать файлы .bsub для сценария, а вместо этого использовать обычный сценарий .sh и использовать команду Unix sh для его запуска с аргументами.

2
27.01.2020, 20:56

Вам нужен либо документ здесь, либо строка здесь.

bsub <<HEREDOC
    $(script.bsub 1)
HEREDOC

Вот как выглядит этот документ. Оболочка прочитает в расширении все, что находится между строкой, в которой <, пока не найдет строку, в которой ничего кроме HEREDOC, и передаст вывод вызываемой команде на ее файловый дескриптор 0 - stdin.

Здесь строка - это то же самое в принципе:

bsub <<< script.bsub 1

Она может выглядеть проще в использовании, но ее также проще запутать и она является а не портативным скриптом оболочки. В то время как документ здесь определен как часть стандарта оболочки POSIX, строка здесь является реализацией, специфичной для оболочки - хотя она будет работать в bash.

Вероятно, лучше использовать этот документ в каждом случае, если вы не можете быть на 100% уверены, что скрипт никогда не будет запущен в среде, в которой он не ломается, и использовать здесь строки только в интерактивном использовании, так как они немного больше, чем ярлык в первую очередь.

Конечно, если любая из этих работ, то, вероятно:

script.bsub 1 | bsub

тоже подойдет. Это будет |pipe script.bsub stdout в bsub stdin, но это также, скорее всего, запустит bsub в подоболочке. Если bsub модифицирует текущее окружение оболочки каким-либо образом - например, изменяя значение переменной оболочки - от чего зависит, то |pipe может быть не лучшим решением.

2
27.01.2020, 20:56

Теги

Похожие вопросы