We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
$ cat <<EOF > aaa > bbb EOF aaa bbb
这种用法称为 Here 文档
here文档[1],又称作heredoc、hereis、here-字符串或here-脚本,是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。它可以保存文字里面的换行或是缩进等空白字元。一些语言允许在字符串里执行变量替换和命令替换。
here文档最通用的语法是<<紧跟一个标识符,从下一行开始是想要引用的文字,然后再在单独的一行用相同的标识符关闭。在Unix shell里,here文档通常用于给命令提供输入内容。
$ cat <<-EOF > aaa > bbb EOF aaa bbb
$ cat << "EOF" > Working dir $PWD > EOF Working dir $PWD
因为默认地,会进行变量替换和命令替换:
$ cat << EOF > Working dir $PWD > EOF Working dir /home/user
用 Python 调用一段 bash 脚本,之前的做法是把 bash 脚本写入文件,然后用 subprocess 调用 bash filename.sh 。但是文件名如果是固定的话,这脚本就不能并行运行了。所以就想到用 bash <<EOF 的办法。
bash filename.sh
bash <<EOF
- cmd = "bash .tmp_run_shell.sh" + cmd = "bash << 'EOF'%sEOF" % script
一开始没给 EOF 加引号,导致 $ 符号相关的命令报错了。通过搜索才发现有加引号的办法,所以记录一下啊。
$
The text was updated successfully, but these errors were encountered:
No branches or pull requests
常见的场景
这种用法称为 Here 文档
其他用法
因为默认地,会进行变量替换和命令替换:
缘由
用 Python 调用一段 bash 脚本,之前的做法是把 bash 脚本写入文件,然后用 subprocess 调用
bash filename.sh
。但是文件名如果是固定的话,这脚本就不能并行运行了。所以就想到用bash <<EOF
的办法。一开始没给 EOF 加引号,导致
$
符号相关的命令报错了。通过搜索才发现有加引号的办法,所以记录一下啊。参考资料
The text was updated successfully, but these errors were encountered: