Вывод на печать Unix в одну строку - PullRequest
0 голосов
/ 09 августа 2011

Я создаю сценарий Unix .bash_profile и столкнулся с небольшой проблемой.Вот фрагмент моего кода:

echo -n "Welcome "
whoami
echo -n "!"

Я хотел бы, чтобы вывод дал что-то вроде этого:

Welcome jsmith!

... вместо этого я получаю что-то вроде этого:

Welcome jsmith
!

Как я могу получить все это на одной строке?Любая помощь очень ценится.Если это поможет, я использую Bash Shell на Ubuntu Server 10.04 LTS.

Ответы [ 5 ]

4 голосов
/ 09 августа 2011

Используйте эту форму.Избавьтесь от echo и избавьтесь от создания subshell .

printf 'Welcome %s!\n' "$USER"
4 голосов
/ 09 августа 2011

Вы можете вставить $(command) (новый стиль) или `command` (старый стиль), чтобы вставить вывод команды в строку в двойных кавычках.

echo "Welcome $(whoami)!"

Примечание: в скрипте это будет работать нормально. Если вы попробуете это в интерактивной командной строке, последний ! может вызвать проблемы, поскольку ! вызывает расширение истории .

Подстановка команд

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

$(command)

или

`command`

Bash выполняет раскрытие, выполняя команду и заменяя подстановку команды стандартным выводом команды, с удаленными любыми завершающими символами новой строки [выделение добавлено] .

2 голосов
/ 09 августа 2011

Попробуйте это:

echo -ne "Welcome `whoami`!\n"

ИЛИ

echo -ne "Welcome $(whoami)!\n"
0 голосов
/ 09 августа 2011

Вы можете сделать что-то вроде:

    echo "Welcome `whoami`!"
0 голосов
/ 09 августа 2011

Вы, вероятно, хотите:

echo "Welcome $(whoami)!"

Конструкция $() выполняет команду внутри нее и вычисляет ее результат.

Другой вариант будет:

{
    echo "Welcome "
    whoami
    echo "!"
} | tr -d '\n'

Хотя это немного безумно.

Что бы вы ни делали, вам могут понадобиться одинарные кавычки вокруг !. В моей оболочке ! является метасимволом истории даже внутри двойных кавычек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...