如何在curl输出之间显示差异

时间:2015-06-26 13:52:48

标签: bash curl

我使用这个简单的bash脚本从密码交换中提取价格。

Bid=$(curl -w "\n" --silent https://bittrex.com/api/v1.1/public/getticker?market=BTC-nanas | cut -c 46-55)
Ask=$(curl -w "\n" --silent https://bittrex.com/api/v1.1/public/getticker?market=BTC-nanas | cut -c 63-72)
Last=$(curl -w "\n" --silent https://bittrex.com/api/v1.1/public/getticker?market=BTC-nanas | cut -c 81-90)

while true;
do echo `date` Bid:$Bid, Ask:$Ask, Last:$Last;
sleep 5;
done

现在我想知道是否有任何方法可以将一个卷曲输出与之前的卷曲输出进行比较,以便在价格上涨/下降时添加颜色。

1 个答案:

答案 0 :(得分:0)

在您的示例中,您只在循环外运行一次命令(对于每个变量),然后每次都打印相同的值。这是一个示例脚本,它将在循环中执行请求,然后检查出价是上升还是下降并根据需要添加颜色。如果符合您的目的,您可以将其扩展到其他字段:

increase='\033[0;31m' # red
decrease='\033[0;32m' # green
none='\033[0m' # to clear the color code

while /bin/true; do
    results=$(curl -w "\n" --silent https://bittrex.com/api/v1.1/public/getticker?market=BTC-nanas)

    cur_bid=$(echo $results | cut -c 46-55)
    cur_ask=$(echo $results | cut -c 63-72)
    cur_last=$(echo $results | cut -c 81-90)

    if [[ -z $old_bid ]]; then
        bid_out=$cur_bid
    else
        if (( $(bc <<< "$cur_bid > $old_bid" ) == 1 )); then
            bid_out="${increase}${cur_bid}${none}"
        elif (( $(bc <<< "$cur_bid < $old_bid" ) == 1 )); then
            bid_out="${decrease}${cur_bid}${none}"
        else
            bid_out=$cur_bid
        fi
    fi

    printf "$(date) Bid:$bid_out ...\n"

    old_bid=$cur_bid
    sleep 5
done

我只是使用你的代码来抓取卷曲结果的正确部分,尽管可能有一种比抓取特定字符集更可靠的方法。