如何在 Bash 中的 HERE_doc 中获取命令的结果

How to get the result of a command in a HERE_doc in Bash

我正在使用 at 命令安排将来的工作。

DoCurlAt () {
    if [ -n "${AuthToken:-}" ] ; then
         << 'EOF'
curl -s -H "${AuthHeader:-}" -H "" --data-urlencode "" ""
EOF
        Exitcode=$?
    fi
    WriteLog Output Info "AT Output: $AtOutput Exitcode: $Exitcode"
}

如何在名为 $AtOutput 的变量中捕获 at 的结果?

我试过

AtOutput=$(bash  << EOF
curl -s -H "${AuthHeader:-}" -H "" --data-urlencode "" ""
EOF
)

但这并没有真正给出任何结果。

也试过:

AtOutput=$(curl -s -H "${AuthHeader:-}" -H "" --data-urlencode "" "" | at "")

但我更愿意使用 HERE-doc。 该函数被调用

DoCurlAt "$AcceptJson" "argString=$ArgString" "$ApiUrl/$ApiVersion/job/$JobUid/run" "$OneTime"
例如

$OneTime ($4) 可能是 "at 15:19 today" 输出主要是这样的:

job 7 at 2016-08-16 15:30

at 写入标准错误,而不是标准输出。首先使用 2>&1 重定向将标准错误复制到标准输出。

$ at_output=$( echo "cmd" | at "$when" 2>&1 )