[英]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.