有没有办法使用shell函数接受来自bash脚本的变量(或者更确切地说,将变量传递给shell函数)?
以下过程工作正常(注意,我正在使用此过程作为我需要实现输出重定向的一部分,如here所述):
# A tibble: 14 x 5
User Touchpoints Conversion Frequency Final_Conv
<fctr> <fctr> <dbl> <dbl> <dbl>
1 User1 A 0 1 0.1016868
2 User1 B 0 2 0.2764134
3 User1 C 0 3 0.7513695
4 User1 F 1 0 0.0000000
5 User1 D 0 4 0.2341217
6 User1 E 0 5 0.6364086
7 User1 H 1 0 0.0000000
8 User2 A 0 1 0.3010000
9 User2 B 0 2 0.8182029
10 User2 K 1 0 0.0000000
11 User2 D 1 0 0.0000000
12 User2 E 0 3 0.2368828
13 User2 F 0 4 0.6439143
14 User2 M 1 5 0.0000000
但是,我想提供初始文件名作为变量而不是硬编码名称,如下所示,但以下内容不起作用:
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"
最终,mycmd()将在循环内调用,并且每次都会使用不同的变量。
答案 0 :(得分:3)
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"