如何在 BASH 中打印(回显)消息而不换行?

发布于 2024-11-28 07:35:28 字数 336 浏览 1 评论 0原文

我正在创建一个 .bash_profile 脚本,但遇到了一个小问题。

这是我的代码片段:

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

我希望输出给出类似这样的内容:

Welcome jsmith!

...而不是这样:

Welcome jsmith
!

如何将所有这些都放到一行上?

非常感谢任何帮助。如果有帮助的话,我正在 Ubuntu Server 10.04 LTS 上使用 Bash Shell。

I am creating a .bash_profile script, and I have run into a small problem.

Here is a snippet of my code:

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

I would like the output to give something like this:

Welcome jsmith!

... instead of this:

Welcome jsmith
!

How can I get all of this onto one line?

Any help is greatly appreciated. If it helps, I'm using the Bash Shell, on Ubuntu Server 10.04 LTS.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

静谧幽蓝 2024-12-05 07:35:28

您可以插入 $(command) (新样式)或 `command` (旧样式)以将命令的输出插入双引号字符串中。

echo "Welcome $(whoami)!"

注意:在脚本中这可以正常工作。如果您在交互式命令行中尝试,最后的 ! 可能会给您带来麻烦,因为 ! 会触发 历史扩展

命令替换

命令替换允许命令的输出替换命令名称。有两种形式:

<前><代码>$(命令)

<前><代码>`命令`

Bash 通过执行命令并将命令替换替换为命令的标准输出来执行扩展,删除所有尾随换行符[强调已添加]

You can insert $(command) (new style) or `command` (old style) to insert the output of a command into a double-quoted string.

echo "Welcome $(whoami)!"

Note: In a script this will work fine. If you try it at an interactive command line the final ! may cause you trouble as ! triggers history expansion.

Command Substitution

Command substitution allows the output of a command to replace the command name. There are two forms:

$(command)

or

`command`

Bash performs the expansion by executing command and replacing the command substitution with the standard output of the command, with any trailing newlines deleted [emphasis added].

物价感观 2024-12-05 07:35:28

使用此表格。摆脱echo并避免创建子shell

printf 'Welcome %s!\n' "$USER"

Use this form. Get rid of echo and get away from creating a subshell.

printf 'Welcome %s!\n' "$USER"
勿忘心安 2024-12-05 07:35:28

试试这个:

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

或者

echo -ne "Welcome $(whoami)!\n"

Try this:

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

OR

echo -ne "Welcome $(whoami)!\n"
像你 2024-12-05 07:35:28

您可能想要:

echo "Welcome $(whoami)!"

$() 构造执行其中的命令,并计算其输出。

另一种选择是:

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

虽然这有点疯狂。

无论您做什么,您可能都需要在 ! 两边加上单引号。在我的 shell 中,! 是一个历史元字符,即使在双引号内也是如此。

You probably want:

echo "Welcome $(whoami)!"

The $() construct executes the command inside it, and evaluates to the output of it.

Another option would be:

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

Although that's a bit mad.

Whatever you do, you might need single quotes around the !. In my shell, ! is a history metacharacter even inside double quotes.

孤独患者 2024-12-05 07:35:28

你可以这样做:

    echo "Welcome `whoami`!"

You can do something like:

    echo "Welcome `whoami`!"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文