[英]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[@]}"
對於多行文本文字,HereDoc 非常合適:
# Use a quoted heredoc 'marker' to disable expansion of backticks
cat <<'LOGO'
__ __ _
/ / / /___ ____ _____ _(_)
/ / / / __ \/ __ `/ __ `/ /
/ /_/ / / / / /_/ / /_/ / /
\____/_/ /_/\__,_/\__, /_/
/____/
LOGO
未引用的 heredoc 標記:
cat <<EOF
hello `echo world`
EOF
輸出:
hello world
引用 heredoc '標記':
cat <<'EOF'
hello `echo world`
EOF
輸出:
hello `echo world`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.