[英]Bash tries to execute commands in heredoc
我正在嘗試編寫一個簡單的bash腳本,它將多行輸出打印到另一個文件。 我是通過heredoc
格式來做的:
#!/bin/sh
echo "Hello!"
cat <<EOF > ~/Desktop/what.txt
a=`echo $1 | awk -F. '{print $NF}'`
b=`echo $2 | tr '[:upper:]' '[:lower:]'`
EOF
我期待在桌面上看到包含以下內容的文件:
a=`echo $1 | awk -F. '{print $NF}'`
b=`echo $2 | tr '[:upper:]' '[:lower:]'`
但相反,我將這些視為what.txt
文件的內容:
a=
b=
不知何故,即使它是heredoc
一部分,bash也試圖逐行執行它。 如何防止這種情況,並將內容按原樣打印到文件中?
引用EOF
以便bash
字面輸入:
cat <<'EOF' > what.txt
a=`echo $1 | awk -F. '{print $NF}'`
b=`echo $2 | tr '[:upper:]' '[:lower:]'`
EOF
也開始使用$()
進行命令替換而不是舊的和有問題的``。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.