gpt4 book ai didi

linux - 科学Linux : I need to take a shell script variable and use it to search in a awk script

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:10 26 4
gpt4 key购买 nike

#!/bin/bash
# This tells you that the script must be run by root.
if [ "$(id -u)" != "0" ];
then
echo "This script must be run as root!" 1>&2
exit 1
fi

userexists=0
while [ $userexists -eq 0 ]
do
# This asks for the user's input for a username.
echo -n "Enter a username: "
read username

x="$username:x:"
# This if block checks if the username exists.
grep -i $x /etc/passwd > /dev/null
if [ $? -eq 0 ]
then
userexists=1
else
echo "That user does not exist!"
fi
done
# This is the heading for the information to be displayed
echo "Information for" $username
echo "--------------------------------------------------------------------"


awk -v varname="var" -f passwd.awk /etc/passwd
awk -f shadow.awk /etc/shadow







BEGIN { FS = ":" }


/"variable"/{print "Username\t\t\t" $1
print "Password\t\t\tSet in /etc/shadow"
print "User ID\t\t\t\t"$3
print "Group ID\t\t\t"$4
print "Full Name\t\t\t"$5
print "Home Directory\t\t\t"$6
print "Shell\t\t\t\t"$7
}

我需要使用从 shell 脚本中获取的变量并将其放入 awk 脚本中以搜索特定用户的 passwd 文件并显示上述信息,但我不确定它是如何工作的。我不完全明白如何使用 -v 命令以及将它放在 awk 脚本中的什么位置。

最佳答案

如果您需要做的就是将 shell 变量 $username 作为 awk 变量 传递给 awk >变量名:

awk -v varname="$username" -f passwd.awk /etc/passwd

在您的 awk 程序中,您可以引用 varname(没有 $),它将返回$usernameshell 上下文中的值相同。

由于 /etc/passwd: 分隔的,并且用户名是第一个字段,下面是具体匹配用户名字段的方法:

awk -F: -v varname="$username" -f passwd.awk /etc/passwd

然后,在 passwd.awk 中,您可以使用以下模式:

$1 == varname 

关于linux - 科学Linux : I need to take a shell script variable and use it to search in a awk script,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23596794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com