Передача аргумента в скриптах .sh - PullRequest
8 голосов
/ 09 января 2012

У меня есть сценарий оболочки foo.sh, который является qsub заданием с содержимым:

    #!/bin/bash -l
    #$ -S /bin/bash
    #$ -N $2
    echo $1

Я хотел бы передать два аргумента. Если я вызываю qsub foo.sh a b, первый аргумент корректно обрабатывается и отображается в командной строке как «a». Однако я не знаю, как передать аргумент во втором случае, начинающийся с '# $ -N'. В этом случае $ 2 не оценивается как «b», но фактически устанавливается «$ 2». Помощь будет высоко ценится.

Ответы [ 2 ]

4 голосов
/ 09 января 2012

Работает ради меня.

Я не знаю, что означает команда -N, но

#!/bin/bash -l
#$ -S /bin/bash
#$ -N $2
echo $1
echo $2

при вызове sh foo.sh a b быстро повторяет

a
b
2 голосов
/ 14 марта 2012

Нет, ты не можешь.Знак # в начале строки позволяет сделать так, что $ 2 не будет заменен аргументом скрипта.Способ сделать то, что вы пытаетесь сделать, это

qsub foo.sh -N <name>
...