Unix 一行打印输出

Oli*_*ryn 1 unix bash shell ubuntu command-line

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

echo -n "Welcome "
whoami
echo -n "!"
Run Code Online (Sandbox Code Playgroud)

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

Welcome jsmith!
Run Code Online (Sandbox Code Playgroud)

......相反,我得到了这样的东西:

Welcome jsmith
!
Run Code Online (Sandbox Code Playgroud)

我怎样才能把所有这些都放在一条线上?任何帮助是极大的赞赏。如果这有帮助,我将在 Ubuntu Server 10.04 LTS 上使用 Bash Shell。

c00*_*ter 6

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

printf 'Welcome %s!\n' "$USER"
Run Code Online (Sandbox Code Playgroud)


Joh*_*ica 5

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

echo "Welcome $(whoami)!"
Run Code Online (Sandbox Code Playgroud)

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

命令替换

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

$(command)
Run Code Online (Sandbox Code Playgroud)

或者

`command`
Run Code Online (Sandbox Code Playgroud)

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