我正在使用此命令使用curl获取页面的响应代码:
curl -s -o /dev/null -w "%{http_code}" 'https://www.example.com'
如果响应代码为200
,那么我想删除计算机上的某个文件。如果不是200
,则不应该做任何事情。
最简单的方法是什么?
答案 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)。