2

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

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

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

我试过了

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

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

还尝试过:

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

但我更喜欢使用 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
4

1 回答 1

1

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

$ at_output=$( echo "cmd" | at "$when" 2>&1 )
于 2016-08-16T14:00:58.197 回答