获取斜杠是一个目录错误,而 运行 在 bash 中回显
Getting slash is a directory error while running echo in bash
每次我的终端加载时,我都试图输出以下 ascii 字符艺术:
__ __ _
/ / / /___ ____ _____ _(_)
/ / / / __ \/ __ / /
/ /_/ / / / / /_/ / /_/ / /
\____/_/ /_/\__,_/\__, /_/
/____/
所以我在 .bashrc
的末尾添加了以下内容:
echo " __ __ _
/ / / /___ ____ _____ _(_)
/ / / / __ \/ __ `/ __ `/ /
/ /_/ / / / / /_/ / /_/ / /
\____/_/ /_/\__,_/\__, /_/
/____/ "
并打印:
它似乎将 ascii 艺术中的斜杠误解为转义序列,这就是它打印 -bash: /: Is a directory
的原因。我怎样才能摆脱它?如果我向 .bashrc
添加一些简单的内容,例如 echo "Hello World!!"
,它不会打印此错误消息。
改用单引号:
echo \
' __ __ _
/ / / /___ ____ _____ _(_)
/ / / / __ \/ __ `/ __ `/ /
/ /_/ / / / / /_/ / /_/ / /
\____/_/ /_/\__,_/\__, /_/
/____/
'
这样试试:
text=(
' __ __ _'
' / / / /___ ____ _____ _(_)'
' / / / / __ \/ __ `/ __ `/ /'
'/ /_/ / / / / /_/ / /_/ / /'
'\____/_/ /_/\__,_/\__, /_/'
' /____/'
)
printf '%s\n' "${text[@]}"
对于 multi-line 文本文字,HereDoc 非常合适:
# Use a quoted heredoc 'marker' to disable expansion of backticks
cat <<'LOGO'
__ __ _
/ / / /___ ____ _____ _(_)
/ / / / __ \/ __ `/ __ `/ /
/ /_/ / / / / /_/ / /_/ / /
\____/_/ /_/\__,_/\__, /_/
/____/
LOGO
Un-quoted heredoc 标记:
cat <<EOF
hello `echo world`
EOF
输出:
hello world
引用heredoc 'marker':
cat <<'EOF'
hello `echo world`
EOF
输出:
hello `echo world`
每次我的终端加载时,我都试图输出以下 ascii 字符艺术:
__ __ _
/ / / /___ ____ _____ _(_)
/ / / / __ \/ __ / /
/ /_/ / / / / /_/ / /_/ / /
\____/_/ /_/\__,_/\__, /_/
/____/
所以我在 .bashrc
的末尾添加了以下内容:
echo " __ __ _
/ / / /___ ____ _____ _(_)
/ / / / __ \/ __ `/ __ `/ /
/ /_/ / / / / /_/ / /_/ / /
\____/_/ /_/\__,_/\__, /_/
/____/ "
并打印:
它似乎将 ascii 艺术中的斜杠误解为转义序列,这就是它打印 -bash: /: Is a directory
的原因。我怎样才能摆脱它?如果我向 .bashrc
添加一些简单的内容,例如 echo "Hello World!!"
,它不会打印此错误消息。
改用单引号:
echo \
' __ __ _
/ / / /___ ____ _____ _(_)
/ / / / __ \/ __ `/ __ `/ /
/ /_/ / / / / /_/ / /_/ / /
\____/_/ /_/\__,_/\__, /_/
/____/
'
这样试试:
text=(
' __ __ _'
' / / / /___ ____ _____ _(_)'
' / / / / __ \/ __ `/ __ `/ /'
'/ /_/ / / / / /_/ / /_/ / /'
'\____/_/ /_/\__,_/\__, /_/'
' /____/'
)
printf '%s\n' "${text[@]}"
对于 multi-line 文本文字,HereDoc 非常合适:
# Use a quoted heredoc 'marker' to disable expansion of backticks
cat <<'LOGO'
__ __ _
/ / / /___ ____ _____ _(_)
/ / / / __ \/ __ `/ __ `/ /
/ /_/ / / / / /_/ / /_/ / /
\____/_/ /_/\__,_/\__, /_/
/____/
LOGO
Un-quoted heredoc 标记:
cat <<EOF
hello `echo world`
EOF
输出:
hello world
引用heredoc 'marker':
cat <<'EOF'
hello `echo world`
EOF
输出:
hello `echo world`