В этом случае вам придется использовать псевдоним электронной почты
.
Причина в том, что domains
, Logs
и virtualmin-backup
- это имена подкаталогов, которые Virtualmin создает под доменом каждого домена, поэтому разрешение имени пользователя с таким же именем приведет к их конфликту.
Обходным решением для этого является создание почтового псевдонима для domains@example.com
(на странице Mail Aliases), который перенаправляет на реальный почтовый ящик с другим именем.
Однако в настоящее время в Virtualmin есть ошибка, которая не позволяет использовать эти имена в качестве почтовых псевдонимов - Это ошибка, поскольку должно быть возможно иметь псевдоним с именем domains
(или другие зарезервированные имена).
Failed to save alias : Missing or invalid alias name (no @ should be included)
Это должно быть исправлено в ближайшем выпуске.
Я сделал отдельный пример для $ var1
и $ var2
:
#!/bin/bash
var1=$(for i in 1 2 3 4; do echo "a$i b$i user$i"; done)
echo "$var1"
var2=$(for i in 1 2 3 4; do echo "user$i"; done)
echo "$var2"
for i in $var2
do
j=$((j+1))
line=$(echo "$var1" | head -n $j | tail -n 1)
printf "%s %s\n" "$line" "$(echo ldap result for $i)"
done
Это выводит:
a1 b1 user1
a2 b2 user2
a3 b3 user3
a4 b4 user4
user1
user2
user3
user4
a1 b1 user1 ldap result for user1
a2 b2 user2 ldap result for user2
a3 b3 user3 ldap result for user3
a4 b4 user4 ldap result for user4
В строке printf
просто замените echo ldap result на команду $ i
нужной командой, например ldapsearch -xyx $ i
.
Примечание: с zsh (вместо bash) это может быть даже немного проще из-за поддержки массивов.
Альтернативное решение, основанное на команде paste
(хотя интервал менее управляем):
#!/bin/bash
var1=$(for i in 1 2 3 4; do echo "a$i b$i user$i"; done)
echo "$var1"
var2=$(for i in 1 2 3 4; do echo "user$i"; done)
echo "$var2"
for i in $var2
do
echo "ldap result for $i"
done | paste <(echo "$var1") -
Делайте все в цикле:
while read -r serv addr load tty usr; do
printf "%s %s %s %s %s %s\n" \
"${serv}" "${addr}" "${load}" "${tty}" "${usr}" $(ldapsearch -xyx "${usr}")
done < <( some command together )
С помощью <<(некоторые команды вместе)
вы перенаправляете вывод некоторой команды вместе
в цикл while.