小编Cir*_*ion的帖子

在 bash 的条件语句中使用 grep

我对用 bash 编写脚本还是很陌生,只是尝试了一些我认为是基本的东西。我想运行从运行 Ubuntu 14.04 的服务器更新的 DDNS。

从 dnsimple 借用一些代码,这是我目前所拥有的:

#!/bin/bash

LOGIN="email"
TOKEN="token"
DOMAIN_ID="domain"
RECORD_ID="record"
IP=`curl -s http://icanhazip.com/`

OUTPUT=`
curl -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -H "X-DNSimple-Domain-Token: $TOKEN" \
     -X "PUT" \
     -i "https://api.dnsimple.com/v1/domains/$DOMAIN_ID/records/$RECORD_ID" \
     -d "{\"record\":{\"content\":\"$IP\"}}"`

if ! echo "$OUTPUT" | grep -q "(Status:\s200)"; then

echo "match"

$(echo "$OUTPUT" | grep -oP '(?<="message":")(.[^"]*)' >> /home/ddns/ddns.log)
$(echo "$OUTPUT"| grep -P '(Status:\s[0-9]{3}\s)' >> /home/ddns/ddns.log)

fi
Run Code Online (Sandbox Code Playgroud)

这个想法是它每 5 分钟运行一次,我使用 cronjob 进行工作。然后我想检查 curl 的输出以查看状态是否为“200”或其他。如果是别的东西,那么我想将输出保存到一个文件中。

我无法工作的是if声明。据我了解,在-qgrep …

bash ubuntu shell-script

44
推荐指数
3
解决办法
14万
查看次数

标签 统计

bash ×1

shell-script ×1

ubuntu ×1