有没有办法在 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。
在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。