Bash awk中外部函数的传递和返回值
我正在从awk的另一个脚本调用函数Bash awk中外部函数的传递和返回值,bash,unix,awk,Bash,Unix,Awk,我正在从awk的另一个脚本调用函数 为什么在添加/dev/null后仍需要按enter键 为什么不显示传递的参数。我得到了空间 我没有从外部函数获取返回值 cat mainpgm.sh #!/bin/bash key=“09” awk-v dk=“$key”{ma=system(“./home/ott/functions.sh;derived dk”)如果您不想处理awk中的输入,请将其输入重定向到/dev/null,并在开始块中执行所有操作。此外,要将dk变量替换为其值,它必须位于引号之外
cat mainpgm.sh
#!/bin/bash
key=“09”
awk-v dk=“$key”{ma=system(“./home/ott/functions.sh;derived dk”)如果您不想处理awk
中的输入,请将其输入重定向到/dev/null
,并在开始
块中执行所有操作。此外,要将dk
变量替换为其值,它必须位于引号之外
awk -v dk="$key" 'BEGIN {
ma = system(". /home/ott/functions.sh;derived " dk);
print "returned value", ma
}' < /dev/null
您在引号中有print
,因此它不是作为语句执行的
你为什么要首先使用awk
?如果你只想调用一个脚本,就不需要它。awk
的目的是读取输入并转换它。我正在比较两个文件。所以使用awk。好吧,如果你在比较两个文件,那么为什么你要使用shell而不是在awk中完成所有工作?你似乎对什么感到非常困惑awk和shell是各自独立的,它们之间的关系也是如此。如果你解释你想做什么,而不是要求我们帮助你实现你认为的解决方案(又称XY问题,请参阅),我们可能会提供更多帮助。我不能使用这个外部开始。我将根据文件列传递参数。您问如何不必键入Enter,这是我的答案。如果您要给它一个要读取的文件,那么您就不必键入Enter,因为它将从文件而不是终端读取。。@Barmar。谢谢您的建议。我的函数调用基于i/p值。我的代码大致类似于cat mainpgm.sh#!/bin/bash key=“09”awk-v dk=“$key”{如果$0==”命令“{ma=system(“./home/ott/functions.sh;派生”dk@Barmar您还可以在此处传递空字符串,即
awk -v dk="$key" 'BEGIN {
ma = system(". /home/ott/functions.sh;derived " dk);
print "returned value", ma
}' < /dev/null
echo "outside function $1"