如何使用环境变量创建密码文件

How to create passwordfile with env variables

在我的程序中,我如何在 bash

中迭代 ENV
if [ ! -z $USER_1 ]
then
  echo "$USER_1":$(openssl passwd -apr1 $PASS_1) > ./passwords
fi
if [ ! -z $USER_2 ]
then
  echo "$USER_2":$(openssl passwd -apr1 $PASS_2) > ./passwords
fi
if [ ! -z $USER_3 ]
then
  echo "$USER_3":$(openssl passwd -apr1 $PASS_3) > ./passwords
fi
if [ ! -z $USER_4 ]
then
  echo "$USER_4":$(openssl passwd -apr1 $PASS_4) > ./passwords
fi
if [ ! -z $USER_5 ]
then
  echo "$USER_5":$(openssl passwd -apr1 $PASS_5) > ./passwords
fi

等等,当我不知道 N

时,我该如何使用 N 个“用户”

编辑 4 月 14 日:我的第一个版本不完整,这是一个修复。

创建循环遍历您的用户:

#!/bin/bash

USER_1=u1
USER_2=u2

N=5
for (( counter=1; counter<=N; counter++ ))
do
    username=USER_${counter}
    password=PASS_${counter}
    echo "DEBUG: $username"
    echo "DEBUG: ${!username}"
    if [[ -n ${!username} ]]
    then
        #echo "$username:$(openssl passwd -apr1 "$password")"> ./passwords
        echo "DEBUG: USER_${counter} inside if"
    fi
    echo "========="
done
  • 要在您的设置中使用,请注释掉调试语句并取消注释您的 openssl 行。
  • 我的第一个版本没有正确使用另一个 USER_? 变量中的变量 counter
  • 使用此特定脚本,USER_1USER_2 将触发 if,因为 USER_3 和更多未设置。