Поэтому, пока я тестировал программу на Python, над которой я работал, я заметил, что echo -e "\n" и printf "\n" соответствии с оператором if в bash.

Несмотря на то, что echo -e "\n" печатает две новые строки (по умолчанию он добавляет одну), а printf печатает только одну.

if [ "$(echo -e "\n")" == "$(printf "\n")" ]
then
    echo 1
fi

а также

if [ $(echo -e "\n") -eq $(printf "\n") ]
then
    echo 1
fi

оба выхода 1 в баш. Я также заметил, что присвоение выходных данных переменной выводит только одну новую строку для echo -e "\n" и printf "\n" ,

A=$(echo -e "\n")
B=$(printf "\n")

echo $A # outputs a single newline
echo $B # also outputs a single newline

так что я думаю, что echo может выводить символ новой строки с помощью fx. STDERR?

1 ответ1

2

Новые строки удаляются подстановкой команд $() . На странице bash написано:

Подстановка команд позволяет выводу команды заменить имя команды. Есть две формы:

$(command)

или же

`command`

Bash выполняет расширение, выполняя команду в среде подоболочек и заменяя подстановку команды стандартным выводом команды, удаляя все завершающие символы новой строки. Внедренные новые строки не удаляются, но они могут быть удалены во время разделения слов. Подстановка команд $(cat file) может быть заменена эквивалентной, но более быстрой $(< file).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .