Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash awk中外部函数的传递和返回值_Bash_Unix_Awk - Fatal编程技术网

Bash 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变量替换为其值,它必须位于引号之外

我正在从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
    变量替换为其值,它必须位于引号之外

    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"