Вам сказали "соединить папки в /var/lib/vz с /etc/vz". Это означает, что вам нужно создать ссылку в /etc/vz
, указывающую на каждый из каталогов в /var/lib/vz
. Для этого выполните:
ln -s /var/lib/vz/names /etc/vz
ln -s /var/lib/vz/dists /etc/vz
Это создаст симлинки /etc/vz/names
и /etc/vz/dists
, указывающие на /var/lib/vz/names
и /var/lib/vz/dists
соответственно.
Плохой отступ и макет вашего скрипта запутывают вопрос, но основной ответ таков:
printf '%s|%s|%s|%s\n' "$(field1)" "$(field2)" "$(field3") "$(field4)"
Рефакторинг в это, и с очисткой отступов и т. д., ваш скрипт становится
#!/bin/bash
host(){
hostname
}
protocol(){
# avoid useless use of cat; get rid of unused parameter
#... do you need sudo here too?
grep Protocol /etc/ssh/sshd_config
}
rootlogin(){
# straighten out massive spaghetti pretzel; remove unused parameter
#... can you avoid sudo cat here?
if sudo cat /etc/ssh/sshd_config |
grep -v "#PermitRootLogin yes" |
grep -i -q "PermitRootLogin yes"
then
# Fix quoting
echo "$host"
else
echo "Root Access Denied"
fi
}
printf '%s|%s|%s|%s\n' "$1" "$(host)" "$(protocol)" "$(rootlogin)" >fonk.out
Последняя строка несколько умозрительна; ваш текущий скрипт, похоже, вообще не печатает первое поле, и неясно, что оно должно содержать.
Здесь больше не используется временный файл, но одним из антишаблонов в вашей попытке было создание временного файла в несвязанной функции. Когда вам действительно нужен временный файл, вероятно, было бы неплохо создать его отдельно, а затем использовать его как параметр везде. Нравится
tmp=$(mktemp) || exit
# arrange for temp file to be removed in case of errors or signals, too
trap 'rm -f "$tmp"' EXIT
trap 'exit' ERROR HUP QUIT TRAP TERM
function1 "$tmp"
function2 "$tmp"
: etc