Linux 在bash中将值放入数组时出现问题

Linux 在bash中将值放入数组时出现问题,linux,bash,Linux,Bash,我想制作一个数组,让用户使用for循环。例如: y[1]=“用户1” y[2]=“用户2” y[n]=“用户n” 我试着这样做 #!/bin/bash x=$(who | cut -d " " -f1 | sort | uniq | wc -l) for (( i=1; i<=$x; i++ )); do y[$i]=$(who | cut -d " " -f1 | sort | uniq | sed -n '$ip') p[$i]=$(lsof -u

我想制作一个数组,让用户使用for循环。例如:

y[1]=“用户1”

y[2]=“用户2”

y[n]=“用户n”

我试着这样做

#!/bin/bash

x=$(who | cut -d " " -f1 | sort | uniq | wc -l)

for (( i=1; i<=$x; i++ )); do
        y[$i]=$(who | cut -d " " -f1 | sort | uniq | sed -n '$ip')
        p[$i]=$(lsof -u ${y[$i]} | wc -l)

        echo "Users:"
        echo ${y[$i]}
        echo -e "Number of launched files:\n" ${p[$i]}
done
#/bin/bash
x=$(who | cut-d”“-f1 | sort | uniq | wc-l)

对于((i=1;i确实,您的
sed
命令似乎有点不正确。我真的猜不出您想在那里做什么。此外,我想知道您为什么要执行
who
两次。您可以使用以下方式首先获得的数据

!/bin/bash
#定义两个数组
y=()
p=()
#x=0
而read-r用户名;do
y+=(“$username”)
p+=($(lsof-u$(id-u“$username”)| wc-l))
echo-e“用户:\n${y[-1]}”
echo-e“打开文件:\n${p[-1]}”
#-1索引是数组中的最后一个索引,但是
#无法取消注释x=0变量和下面的行:
#((x++)

完成确实,您的
sed
命令似乎有点不正确。我真的猜不出您想在那里做什么。除此之外,我想知道您为什么要执行两次
who
。您可以使用以下方式首先获得的数据

!/bin/bash
#定义两个数组
y=()
p=()
#x=0
而read-r用户名;do
y+=(“$username”)
p+=($(lsof-u$(id-u“$username”)| wc-l))
echo-e“用户:\n${y[-1]}”
echo-e“打开文件:\n${p[-1]}”
#-1索引是数组中的最后一个索引,但是
#无法取消注释x=0变量和下面的行:
#((x++)

完成,您似乎正在将数字追加到用户输出的末尾。尝试以下操作:
y[$i]=$(who | cut-d”“-f1 | sort | uniq | sed“s/$/${ip}
。您似乎正在将数字追加到用户输出的末尾。尝试以下操作:
y[$i]=$(who | cut d”“-f1 | sort | uniq | sed“s/$/{ip}”
。我还建议双引号引用
$username
,以防出现奇怪的字符。我还建议双引号引用
$username
,以防出现奇怪的字符。