只是想知道是否有人能解释一下为什么这样做:
echo `cat <<EOF
{"branch":"foo","value":"bar"}
EOF`但这并不是:
echo <<EOF
{"branch":"foo","value":"bar"}
EOF(第二个片段没有对stdout的任何响应。)
发布于 2018-08-14 00:00:00
因为echo从不从stdIn读取。试试这个:
echo foo bar | echo但是,如果并且只有在它的args中没有文件时,cat才会这样做:
echo foo bar | cat第一个例子是插入...的结果作为echo的参数。第二个例子是将HEREDOC输入回波,因此忽略了它。
另外,您的第一个示例不是保护参数回显,这意味着shell将在将其传递给echo之后再次展开它。
把一个凶残的角色看作是“砰”,这是行不通的:
echo `cat <<EOF
{"branch":"foo","value":"bar!"}
EOF`这确实是:
echo "`cat <<EOF
{"branch":"foo","value":"bar!"}
EOF`"https://unix.stackexchange.com/questions/462398
复制相似问题