Используя Несколько Функция для получения вывода в одной строке

Вам сказали "соединить папки в /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 соответственно.

0
07.09.2018, 13:05
1 ответ

Плохой отступ и макет вашего скрипта запутывают вопрос, но основной ответ таков:

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
0
28.01.2020, 04:15

Теги

Похожие вопросы