Передача переменной в функцию оболочки - PullRequest
0 голосов
/ 30 мая 2018

Есть ли способ использовать функцию оболочки, которая принимает переменную из скрипта bash (или, скорее, передать переменную в функцию оболочки)?

Следующая процедура работает отлично (обратите внимание, я использую эту процедуру как часть моей необходимости реализовать перенаправление вывода, как объяснено здесь ):

mycmd() { cat <(head -3 MyProgrammingBook.txt|awk -F "\t" '{OFS="\t"}{print "Helloworld",$0}') > outputfile.txt; }; 
export -f mycmd; 
bsub -q short "bash -c mycmd"

Тем не менее, я хотел бы предоставить начальное имя файла в виде переменной, а не как жестко закодированное имя, что-то вроде следующего, но следующее не работает:

myinputfile="MyProgrammingBook.txt";
mycmd() { cat <(head -3 ${myinputfile}|awk -F "\t" '{OFS="\t"}{print "Helloworld",$0}') > outputfile.txt; }; 
export -f mycmd; 
bsub -q short "bash -c mycmd"

В конечном счете, mycmd () будетвызывается внутри цикла и будет использоваться каждый раз с другой переменной.

1 Ответ

0 голосов
/ 30 мая 2018

export переменная тоже:

myinputfile="MyProgrammingBook.txt";
mycmd() { cat <(head -3 ${myinputfile}|awk -F "\t" '{OFS="\t"}{print "Helloworld",$0}') > outputfile.txt; }; 
export -f mycmd;
export myinputfile;   # Here
bsub -q short "bash -c mycmd"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...