cre*_*dd1 10 bash shell-script here-document
想象一下,你有一个愚蠢的脚本 test.sh ,参数被传递给它,看起来像这样:
bash test.sh arg1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)
test.sh 是一个显示其命令行的愚蠢脚本:
#!/bin/bash
echo "$0 $*"
Run Code Online (Sandbox Code Playgroud)
我想使用 bash heredoc << 将脚本提供给 bash 来做同样的事情。所以我试过这个:
#!/bin/bash
echo "$0 $*"
Run Code Online (Sandbox Code Playgroud)
但它失败并出现错误
bash: arg1: No such file or directory
Run Code Online (Sandbox Code Playgroud)
任何的想法 ?
Gil*_*il' 13
here 文档通过其标准输入传递给内部 bash。您需要指示 bash 从标准输入读取。没有命令行参数,这会自动发生。如果至少有一个非选项参数且没有-sor-c选项,则第一个非选项参数是要运行的脚本文件的名称。您可以通过-指定标准输入。或者,传递-s选项以告诉 bash 从标准输入读取。
bash <<'EOF' - -- arg1 arg2 arg3
echo "$0 $*"
EOF
Run Code Online (Sandbox Code Playgroud)
或者
bash <<'EOF' -s -- arg1 arg2 arg3
echo "$0 $*"
EOF
Run Code Online (Sandbox Code Playgroud)