linux中here文档,Linux下Bash Heredoc(Here document)的用法及基本示例
本文講解在Linux操作系統(tǒng)下Bash Heredoc(Here document)的用法,及基本的Heredoc示例、將Heredoc和SSH一起使用。
簡(jiǎn)介
在編寫(xiě)shell腳本時(shí),您可能需要將多行文本或代碼傳遞給交互式命令(例如tee、cat或sftp)。
在Bash和Zsh等其他shell中,Here document(Heredoc)是一種重定向類(lèi)型,允許您將多行輸入傳遞給命令。
Heredoc用法
編寫(xiě)B(tài)ash Heredoc(Here document)的用法采用以下形式:
[COMMAND] <
HERE-DOCUMENT
DELIMITER
說(shuō)明:
1、第一行以可選命令開(kāi)頭,后跟特殊重定向操作符<
您可以使用任何字符串作為分隔標(biāo)識(shí)符,最常用的是EOF或END。
如果未使用定界標(biāo)識(shí)符,則在將此處文檔行傳遞給命令之前,shell將替換所有變量、命令和特殊字符。
在重定向運(yùn)算符<
2、here-document處可以包含字符串、變量、命令和任何其他類(lèi)型的輸入。
3、最后一行以定界標(biāo)識(shí)符結(jié)尾,分隔符前面不允許有空格。
基本的Heredoc示例
下面,我們將介紹一些如何使用heredoc的基本示例。
在下面的示例中,我們傳遞了兩行文本,其中包含一個(gè)環(huán)境變量和一個(gè)使用here文檔進(jìn)行分類(lèi)的命令:
cat << EOF
The current working directory is: $PWD
You are logged in as: $(whoami)
EOF
從下面的輸出中可以看到,變量和命令輸出都被替換了:
The current working directory is: /home/ywnz
You are logged in as: ywnz
讓我們看看如果將定界符括在單引號(hào)或雙引號(hào)中會(huì)發(fā)生什么:
cat <
The current working directory is: $PWD
You are logged in as: $(whoami)
EOF
您會(huì)注意到,當(dāng)用引號(hào)引起來(lái)時(shí),shell不會(huì)進(jìn)行任何參數(shù)擴(kuò)展和命令替換:
The current working directory is: $PWD
You are logged in as: $(whoami)
如果在語(yǔ)句或循環(huán)中使用Heredoc,請(qǐng)使用<
if true; then
cat <
Line with a leading tab.
EOF
fi
返回:
Line with a leading tab.
您可以使用>,>>運(yùn)算符將輸出重定向到文件,而不是在屏幕上顯示輸出:
cat << EOF > file.txt
The current working directory is: $PWD
You are logged in as: $(whoami)
EOF
如果file.txt不存在,它將被創(chuàng)建。使用>時(shí),文件將被覆蓋,而>>則將輸出附加到文件。
Heredoc輸入也可以通過(guò)管道傳遞。在以下示例中,sed命令將用e替換l字符的所有實(shí)例,參考sed命令_Linux sed命令使用詳解:功能強(qiáng)大的流式文本編輯器:
cat <
Hello
World
EOF
返回:
Heeeo
Wored
要將管道數(shù)據(jù)寫(xiě)入文件:
cat < file.txt
Hello
World
EOF
將Heredoc和SSH一起使用
使用不帶引號(hào)的定界符時(shí),請(qǐng)確保轉(zhuǎn)義所有變量,命令和特殊字符,否則它們將在本地插入:
ssh -T user@host.com << EOF
echo "The current local working directory is: $PWD"
echo "The current remote working directory is: \$PWD"
EOF
返回:
The current local working directory is: /home/ywnz
The current remote working directory is: /home/user
您可能還希望設(shè)置基于SSH密鑰的身份驗(yàn)證并連接Linux服務(wù)器而不輸入密碼,可根據(jù)需求來(lái)設(shè)置。
相關(guān)主題
總結(jié)
以上是生活随笔為你收集整理的linux中here文档,Linux下Bash Heredoc(Here document)的用法及基本示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux 验证邮箱账号,linux邮件
- 下一篇: Linux五部分的含义,Linux 目录