将Bash变量传递给awk脚本

时间:2014-05-08 19:57:32

标签: linux bash shell awk

我正在尝试使用bash脚本来使用我提供的用户名。将Username作为变量并将其传递给我的awk脚本,这样我就可以按照我在awk脚本中的方式显示用户的信息。 这是我到目前为止所做的。

#!/bin/bash

read -p "Username:" $user 

 awk -v var="$user" -f passwd.awk /etc/passwd

AWK脚本

BEGIN { FS = ":" }

if (var == $1){
    print ""
    print "UserName:"$1 
    print "Password Encrytped:"$2
    print "User Number:"$3 
    print "User Group:" $4
    print "FullName:" $5
    print "User Directory:" $6
    print "User Shell:" $7
 }

2 个答案:

答案 0 :(得分:2)

而不是:

read -p "Username:" $user

使用:

read -p "Username: " user

您需要为read提供变量的名称,而不是其值。

答案 1 :(得分:1)

您需要将awk if语句括在块

BEGIN { FS = ":" }

{
    if (var == $1){
        print ""
        print "UserName:"$1 
        print "Password Encrypted:"$2
        print "User Number:"$3 
        print "User Group:" $4
        print "FullName:" $5
        print "User Directory:" $6
        print "User Shell:" $7
     }
}

您还需要anubhava's answer,删除$行上的印记(read)。