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