如何混合使用函数和纯文本来设置鱼问候语?

How do I mix functions and plain text for setting the fish greeting?

这里的函数解决方案工作正常。 Suppress or Customize Intro Message in Fish Shell

但是我似乎也无法插入文本。基本上我想显示来自 OMF 的 fish_logo,然后在它下面显示我自己的消息。

我想或许可以将文本括在 ', 或 " 中,但我收到了一个错误。我在没有任何附件的情况下尝试并收到了一个错误。

这就是我认为可行的方法。

function fish_greeting
    fish_logo
    'Hello Phil. What magic shall we create today?'
end

要输出文本,请使用 echo thetext

所以

function fish_greeting
    fish_logo
    echo 'Hello Phil. What magic shall we create today?'
end

显然其他用户的回答是对您问题的有效答案,但我想我也可以为您提供另一种解决方案。首先,详细解释问题的根源:您只是在函数中放置了一个带引号的字符串,而没有实际调用函数、命令或内置函数来实际将所需的文本写入终端。很简单。其他用户建议您使用 echo "STRING",这是完全可以接受的回复。

但是,我建议您使用 printf。在编写脚本时,实现 printf 与使用 echo 需要完全不同的方法,但我知道很多人认为熟悉 printf 是更好的选择。正确使用它可能会花费一些技巧,但它比 echo 更加通用和可靠。我不会通过记录使用 printf 的每一种可能方式让您感到厌烦,因为有 PLENTY 的文档、指南和有关该主题的信息。

在您的具体情况下,要获得与先前响应相同的结果:

function fish_greeting
    fish_logo
    printf "%s" "Hello Phil. What magic shall we create today?"
end

这也将像 echo 用例一样,通过 fish_greeting 调用的 fish_logo 函数将徽标打印到终端,然后通过 printfprintf 在那里做什么的简要说明:

第一个引用的值作为格式,后面的作为参数。幸运的是,printf 支持针对不同场景的多种格式说明符。在本例中,%s 表示一个字符串,参数被传递为该格式并写入终端输出。这是一口...但如果你在这里学到了任何东西,那就完全值得了!而且,我个人觉得深入挖掘以获得更多的经验和知识更有意义,这无疑会让你在未来受益。

我将通过向您展示 printf 的格式说明符列表来结束本文,让您了解它比 echo:

有用多少

%d: Argument will be used as decimal integer. (signed or unsigned)

%i: Argument will be used as a signed integer.

%o: An octal unsigned integer.

%u: An unsigned decimal integer.

%x or %X: An unsigned hexadecimal integer.

%f, %g or %G: A floating-point number.

%e or %E: A floating-point number in scientific notation.

%s: A string.

%b: A string that interprets backslash escapes.

%% signifies a literal %.

除此之外,printf 还具有大量可识别的反斜杠转义功能,是一种比 echo 优越得多的打印方法!这次要总结一下:访问 Fish Shell 文档,特别是 printf 的部分以了解更多信息。

Fish Shell Docs

Printf Page