繁体   English   中英

管道中的传递函数参数

[英]Pass function parameter in pipe

我在bash脚本中编写了一个带有一些帮助的函数:

function test() {
    temp=$(cat /etc/passwd | grep $(whoami) | awk -F : "{print $`echo $1`}")
    echo "$temp"
}

我给它一个数字X,它应该在passwd文件的用户条目中打印第X列。

echo $(test "3")

...将使我进入第三栏。 我很难理解awk部分的工作原理。 回声如何参与

"{print $`echo $1`}" 

访问功能$1而不是$1从管?

您混用了awk和shell,并且误解了awk的含义以及一些shell基础知识,从而造成了复杂的混乱。 所有你需要的是:

mytest() {
    awk -F':' -v col="$1" -v me="$(whoami)" '$1==me{print $col}' /etc/passwd
}

mytest 3

我将函数“ test”重命名为“ mytest”,因为“ test”是内置shell的名称。

获取Arnold Robbins撰写的有效的Awk编程第四版和Chris Johnson撰写的Shell脚本食谱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM