我正在使用脚本,并且是shell脚本的新手。
我正在尝试从源文件创建一个将在多个网站上运行curl的脚本。
arr_values=()
#Getting list of domains/websites to check, into array.
read -ra arr_values <<< $(head -n 999 web.csv)
for s in "${arr_values[@]}"; do
#Running curl on each websites from list.
res=$(curl -s -o /dev/null -w "%{http_code}" $s)
if [ $res == "200" ]; then
echo "OK";
elif
[ $res == "302" ]; then
echo "OK";
else
echo "Error";
fi
done
但是当我在没有if语句的情况下运行时,我得到了代码000。 如果我手动运行它,一切正常。 结果是200或302.
答案 0 :(得分:0)
你可以在表达式周围使用单括号,即[和],而不是[[和]]。您也可以从要检查的值中删除星号,即"200"
,而不是*"200"*
。
答案 1 :(得分:0)
假设CSV文件是:
www.yahoo.com
www.google.ca
即。每行一个站点。同时在文件上运行dos2unix
,以确保每行末尾没有“\ r \ n”字符。
然后,运行以下代码:
#!/bin/bash
arr_values=()
#Getting list of domains/websites to check, into array.
read -ra arr_values <<< $(head -n 999 web.csv)
for s in "${arr_values[@]}"
do
#Running curl on each websites from list.
res=$(curl -s -o /dev/null -w "%{http_code}" $s)
if [ $res == "200" ]
then
echo "OK $s $res";
elif [ $res == "302" ]
then
echo "OK $s $res";
else
echo "Error $s $res";
fi
done
得到了这个输出:
./t.bash
Error www.yahoo.com 301
OK www.google.ca 200
修改内容: