3 回答

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
使用$()將的輸出分配cat給您的變量,如下所示:
VAR=$(cat <<'END_HEREDOC'
abc'asdf"
$(dont-execute-this)
foo"bar"''
END_HEREDOC
)
# this will echo variable with new lines intact
echo "$VAR"
# this will echo variable without new lines (changed to space character)
echo $VAR
確保以單引號(hào)分隔END_HEREDOC開頭。
請注意,此行末尾定界符END_HEREDOC必須在行上單獨(dú)存在(因此,圓括號(hào)末尾位于下一行)。

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊
這是Dennis方法的變體,在腳本中看起來更優(yōu)雅。
函數(shù)定義:
define(){ IFS='\n' read -r -d '' ${1} || true; }
用法:
define VAR <<'EOF'
abc'asdf"
$(dont-execute-this)
foo"bar"''
EOF
echo "$VAR"
請享用
ps 為不支持的shell 制作了“讀取循環(huán)”版本read -d。應(yīng)與工作set -eu和未成反引號(hào),但沒有測試非常好:
define(){ o=; while IFS="\n" read -r a; do o="$o$a"'
'; done; eval "$1=\$o"; }
添加回答
舉報(bào)