有没有办法在 Fish shell 中 echo/cat 多行消息?

Is there a way to echo/cat a multiline message in Fish shell?

在Bash/Zsh中,多行消息使用cat是可以的,例如:

cat <<DELIM
This is line 1
This is line 2
DELIM

但是,上述代码对 Fish Shell 不起作用。 有办法吗?

鱼没有“Here documents”。

最简单的方法可能是使用 printf,例如:

printf "%s\n" "This is line 1" "This is line 2"

或者您可以利用 fish 跨多行扫描匹配引号这一事实:

echo "This is line 1
This is line 2"

如果您希望在下一行有结束引号以方便插入更多行,您可以使用 echo -n:

echo -n "This is line 1
This is line 2
"

这就是我最终用于文本块的内容。阅读来自 faho 的关于 printf 的提示。但希望代码看起来像块本身。

printf "\t%s\n"              \
       "###################" \
       "#                 #" \
       "# Multiline block #" \
       "#                 #" \
       "###################"

%s: 是否用双引号括起来的字符串。

\n: 换行。

\t: 水平制表符。

将其混合在一起会在每行前插入一个制表符,使文本缩进。并在每行末尾添加一个回车 return。