从两个命令的输出创建关联数组

Gno*_*ton 2 bash shell-script associative-array

我正在尝试根据导入的 passwd 文件创建用户目录,并尝试将数据加载到关联数组中: array[username]=directory 。我可以将字段加载到一个单独的数组中,但我无法获得正确的关联,因为每个字段都与所有目录相关联。

USERLIST=$(cat /usrmkr/in.out | awk -F ":" '{print $1}')
DIRLIST=$(cat /usrmkr/in.out | awk -F ":" '{print $6}')
declare -A USERARRAY

func_StoreData()
{
    USERARRAY[$1]="$2"
    return $?
}

for ((u=0;u<${USERLIST[@]};u++)); do
    func_StoreData ${USERLIST[$u]} ${DIRLIST[$u]}
done

for i in ${!USERARRAY[@]}; do
    echo "making directory for $i in ${USERARRAY[$i]}"
    #Do stuff
done
Run Code Online (Sandbox Code Playgroud)

Jef*_*ler 5

您可以直接使用 bash 阅读整个内容,告诉 read 在冒号上拆分:

declare -A userarray
while IFS=: read -r username password uid gid gecos home shell; do
  userarray[$username]=$home
done < /usrmkr/in.out
Run Code Online (Sandbox Code Playgroud)