Bash Unix一行打印输出
我正在创建一个Unix.bash_概要文件脚本,遇到了一个小问题。以下是我的代码片段: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
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。