Bash Unix一行打印输出

Bash Unix一行打印输出,bash,unix,shell,command-line,ubuntu,Bash,Unix,Shell,Command Line,Ubuntu,我正在创建一个Unix.bash_概要文件脚本,遇到了一个小问题。以下是我的代码片段: echo -n "Welcome " whoami echo -n "!" 我希望输出结果如下所示: Welcome jsmith! Welcome jsmith ! 。。。相反,我得到的是这样的东西: Welcome jsmith! Welcome jsmith ! 我怎样才能把这些都放到一条线上?非常感谢您的帮助。如果这有帮助,我正在Ubuntu服务器10.04 LTS上使用Bash Shell

我正在创建一个Unix.bash_概要文件脚本,遇到了一个小问题。以下是我的代码片段:

echo -n "Welcome "
whoami
echo -n "!"
我希望输出结果如下所示:

Welcome jsmith!
Welcome jsmith
!
。。。相反,我得到的是这样的东西:

Welcome jsmith!
Welcome jsmith
!
我怎样才能把这些都放到一条线上?非常感谢您的帮助。如果这有帮助,我正在Ubuntu服务器10.04 LTS上使用Bash Shell。

您可能需要:

echo "Welcome $(whoami)!"
$construct在其内部执行命令,并计算其输出

另一种选择是:

{
    echo "Welcome "
    whoami
    echo "!"
} | tr -d '\n'
虽然这有点疯狂

无论您做什么,都可能需要在!周围加上单引号!。在我的壳里!是历史元字符,甚至在双引号内。

您可能需要:

echo "Welcome $(whoami)!"
$construct在其内部执行命令,并计算其输出

另一种选择是:

{
    echo "Welcome "
    whoami
    echo "!"
} | tr -d '\n'
虽然这有点疯狂

无论您做什么,都可能需要在!周围加上单引号!。在我的壳里!是一个历史元字符,甚至在双引号内。

您可以插入$command new style或'command`old style将命令的输出插入双引号字符串中

echo "Welcome $(whoami)!"
注意:在脚本中,这可以正常工作。如果您在交互式命令行上尝试它,那么最终会成功!可能会给你带来麻烦!触发器

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

$(command)

`command`
Bash通过执行命令并用命令的标准输出替换命令替换来执行扩展,并删除任何尾随的换行符[emphasis added]

可以插入$command new style或'command`old style将命令输出插入双引号字符串

echo "Welcome $(whoami)!"
注意:在脚本中,这可以正常工作。如果您在交互式命令行上尝试它,那么最终会成功!可能会给你带来麻烦!触发器

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

$(command)

`command`
Bash通过执行命令并用命令的标准输出替换命令替换来执行扩展,并删除任何尾随的换行符[emphasis added]

试试这个:

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

试试这个:

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


您可以执行以下操作:

    echo "Welcome `whoami`!"

您可以执行以下操作:

    echo "Welcome `whoami`!"
用这个表格。摆脱echo,避免创建子shell

用这个表格。摆脱echo,避免创建子shell


谢谢你,约翰。很好地抓住了!,顺便说一句这正是我所需要的!谢谢你,约翰。很好地抓住了!,顺便说一句这正是我所需要的!第一个版本可以,但第二个版本不行-ne不抑制由whoami创建的\n。第一个版本可以,但第二个版本不行-ne不抑制由whoami创建的\n。