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

Cha*_*ase 3 linux terminal command-line curl

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

curl -s -o /dev/null -w "%{http_code}" 'https://www.example.com'
Run Code Online (Sandbox Code Playgroud)

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

最简单的方法是什么?

ran*_*mir 5

您可以将结果存储在shell变量中(通过命令替换),然后使用simple if[[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
Run Code Online (Sandbox Code Playgroud)

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

#!/bin/bash
[[ $code == 200 ]] && rm /path/to/file
Run Code Online (Sandbox Code Playgroud)

在通用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
Run Code Online (Sandbox Code Playgroud)

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

#!/bin/bash
[[ $code == 2* ]] && rm /path/to/file
Run Code Online (Sandbox Code Playgroud)

case命令(这里的一个例子).