在终端中使用带有curl的“if”语句?

时间:2017-11-28 19:30:35

标签: linux curl command-line terminal

我正在使用此命令使用curl获取页面的响应代码:

curl -s -o /dev/null -w "%{http_code}" 'https://www.example.com'

如果响应代码为200,那么我想删除计算机上的某个文件。如果不是200,则不应该做任何事情。

最简单的方法是什么?

1 个答案:

答案 0 :(得分:5)

您可以将结果存储在shell变量中(通过command substitution),然后使用简单的if and [[ command测试该值。例如,在bash

#!/bin/bash
code=$(curl -s -o /dev/null -w "%{http_code}" 'https://www.example.com')
if [[ $code == 200 ]]; then
    rm /path/to/file
    # other actions
fi

如果你想要的只是一个简单的rm,你可以将它缩短为:

#!/bin/bash
[[ $code == 200 ]] && rm /path/to/file

在通用POSIX shell中,您必须使用灵活性较低的[命令并引用变量:

#!/bin/sh
code=$(curl -s -o /dev/null -w "%{http_code}" 'https://www.example.com')
if [ "$code" = 200 ]; then
    rm /path/to/file
fi

此外,要测试完整类代码(例如2xx),您可以使用通配符:

#!/bin/bash
[[ $code == 2* ]] && rm /path/to/file

case命令(示例here)。