簡體   English   中英

在 bash 中運行 echo 時獲取斜杠是目錄錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM