我在一个bash脚本中写了一个函数并提供了一些帮助:
function test() {
temp=$(cat /etc/passwd | grep $(whoami) | awk -F : "{print $`echo $1`}")
echo "$temp"
}
我给它一个数字X,它应该从passwd文件中的users条目打印第X列。
echo $(test "3")
...会给我第三栏的条目。 我无法理解awk部分是如何工作的。
中的回声是如何分开的"{print $`echo $1`}"
从管道访问函数$1
而不是$1
?
答案 0 :(得分:3)
你正在混淆awk和shell并且误解了awk的用途加上一些shell基础知识,从而造成一个复杂的混乱。您所需要的只是:
mytest() {
awk -F':' -v col="$1" -v me="$(whoami)" '$1==me{print $col}' /etc/passwd
}
mytest 3
我重命名了功能" test"到了#my;" mytest"自"测试"是内置shell的名称。
获得由Jonn Robbins撰写的有效Awk编程第4版和Chris Johnson的Shell Scripting Recipes。