在terminal使用curl“if”语句?

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

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

如果响应代码是200 ,那么我想删除我的电脑上的某个文件。 如果不是200 ,就不应该做任何事情。

什么是最简单的方法来做到这一点?

您可以将结果存储在一个shell变量中(通过命令替换 ),然后用一个简单的if[[命令]测试该值。 例如,在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命令( 这里是一个例子)。