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 に答える