如何混合使用函数和纯文本来设置鱼问候语?
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
函数将徽标打印到终端,然后通过 printf
。 printf
在那里做什么的简要说明:
第一个引用的值作为格式,后面的作为参数。幸运的是,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
的部分以了解更多信息。
这里的函数解决方案工作正常。 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
函数将徽标打印到终端,然后通过 printf
。 printf
在那里做什么的简要说明:
第一个引用的值作为格式,后面的作为参数。幸运的是,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
的部分以了解更多信息。