shell 如何在BASH中打印(回显)没有换行符的消息?

xmd2e60i  于 7个月前  发布在  Shell
关注(0)|答案(5)|浏览(91)

我正在创建一个.bash_profile脚本,遇到了一个小问题。
下面是我的代码片段:

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

我希望输出给予如下内容:

Welcome jsmith!

.而不是这个:

Welcome jsmith
!

我怎么能把所有这些都放在一条线上呢?
任何帮助都非常感谢。如果有帮助的话,我在Ubuntu Server 10.04 LTS上使用Bash Shell。

ecfsfe2w

ecfsfe2w1#

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

echo "Welcome $(whoami)!"

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

命令替换

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

$(command)

`command`

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

rta7y2nd

rta7y2nd2#

使用此表格。摆脱echo,远离创建一个 subshell

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

k75qkfdt3#

试试这个:

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

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

42fyovps4#

您可能需要:

echo "Welcome $(whoami)!"

$()结构执行其中的命令,并计算其输出。
另一种选择是:

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

虽然有点疯狂
无论你做什么,你可能需要在!周围加上单引号。在我的shell中,!是一个历史元字符,即使在双引号内也是如此。

gtlvzcf8

gtlvzcf85#

您可以执行以下操作:

echo "Welcome `whoami`!"

相关问题