Как использовать команду tee с эхо в соответствии с требованиями ниже?

Да, в Linux есть другие инструменты для работы с разделами, которые могут работать с разделами FAT32. Я знаю, что gdisk и parted отлично работают на дисках с разделами GPT, которые имеют раздел ESP.

0
09.09.2017, 15:27
3 ответа

Я предполагаю, что вы хотели бы использовать этот необычный способ пометить фактический канал и teeв конце сообщения журнала, потому что вы не хотите, чтобы каждый канал echo?

Ну, можно и так:

logfile='report.txt'

log () {
    if [ -z "$1" ]; then
        cat
    else
        printf '%s\n' "$@" 
    fi | tee -a "$logfile"
}

log "some message"
log "some other message"
log "multi" "line" "output"

{
    cat <<LETTER
Dear Sir,

It has come to my attention, that a whole slew of things may be
collected and sent to the same destination, just by using a single
pipe. Just use {... } | destination

Sincerely, $LOGNAME
LETTER

    cat <<THE_PS
PS.
Here's the output of "ls -l":
THE_PS

    ls -l

    echo "LOL"

} | log

То есть оберните неуклюжую команду teeв простую функцию оболочки, имя которой легко ввести, и просто передайте ей вывод.

В этом примере функция logиспользует printfдля вывода данных, указанных в ее командной строке, или переключается на чтение из стандартного ввода, если это не были аргументы командной строки.

Можно даже использовать

./your_original_script_without_special_logging 2>&1 | log
6
28.01.2020, 02:15

Они так используют

echo '***************-:START OF THE REPORT:-***********' $log
Строка

просто отображает содержимое $logв командной строке, не действуя так, как если бы вы вводили эту строку в консоли.

Чтобы линия работала так, как вы ожидаете, вы можете использовать или использовать eval.

eval echo '***************-:START OF THE REPORT:-***********' $log
1
28.01.2020, 02:15

На самом деле вам следует использовать функцию, маскирующую команду echoдля этого:

echo ()
{
    builtin echo "$@" | tee -a report.txt
}

Тогда можно сделать:

echo ""
echo '***************-:START OF THE REPORT:-***********'

Без жесткого кодирования teeили чего-либо еще в конце команд echo.

0
28.01.2020, 02:15

Теги

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