Linux 如何使Awk在shell脚本中使用Bash数组变量? user=(`cat

Linux 如何使Awk在shell脚本中使用Bash数组变量? user=(`cat,linux,shell,ubuntu,awk,Linux,Shell,Ubuntu,Awk,这就是我使用用户数组元素作为awk说明符的编码方式。如何插入${user[$I]}进入AWK命令。正如我在a中所指出的,您的AWK脚本包含在单引号中;您的shell变量将不会在单引号中展开。总的来说,这很好;$NF不是您的shell变量之一 您可能需要使用以下主题的变体: user=(`cat < usernameSorted.txt`) for (( i=0; i<${#user[@]}; i++ )) do `awk '$1 == "${user[$i]}&qu

这就是我使用用户数组元素作为awk说明符的编码方式。如何插入${user[$I]}进入AWK命令。

正如我在a中所指出的,您的AWK脚本包含在单引号中;您的shell变量将不会在单引号中展开。总的来说,这很好;
$NF
不是您的shell变量之一

您可能需要使用以下主题的变体:

user=(`cat < usernameSorted.txt`)
for (( i=0; i<${#user[@]}; i++ ))
do
    `awk '$1 == "${user[$i]}"{print $NF}' process.txt > CMD$i.txt`
done
其中,您将
user
称为命令行上的
“${user[$i]}”
中设置的Awk变量



脚本中还有其他一些奇怪之处。
什么是“有效”和“限制范围”意思是?你想做什么?除非你能澄清你的问题以及你期望发生什么和没有发生什么,否则你的问题将被关闭。请回顾欢迎访问SO!请阅读。你正在询问如何插入
${user[$i]}
输入到AWK命令中,对吗?请澄清。对于调试帮助,包括示例输入、所需输出和实际输出(如错误)确实很有帮助。您的
awk
脚本包含在单引号中;shell变量不会在单引号中展开。您可能需要在
awk-v user=“${user[$i]}”…program…'process.txt>“CMD$i.txt”
主题上使用变体,其中您将
user
作为
中的awk变量集引用${user[$i]}“
在命令行上。一般来说,要对shell变量使用awk(或sed、grep或任何其他过滤器),您需要通过过滤器回送变量。因此,您的awk行看起来更像>>回送${user[i]}awk'xxxxxxxx')(其中xxxxxxxx是您的awk命令)
awk -v user="${user[$i]}" '$1 == user { print $NF }' process.txt > "CMD$i.txt"
i=0
for user in $(cat usernameSorted.txt)
do
    awk -v user="$user" '$1 == user { print $NF }' process.txt > "CMD$i.txt"
    ((i++))
done