我正在尝试制作一个简单的bash脚本,它将遍历包含IP地址的文本文件, ping他们一次,看看他们是否还活着。
到目前为止,这是我的工作:
#!/bin/bash
for ip in $(cat ips.txt); do
if [[ "1" == "$(ping -c 1 $ip | grep 'packets transmitted' | cut -d ' ' -f 4)"]]
echo $ip
fi
done
有什么建议吗? 谢谢!
答案 0 :(得分:1)
这似乎有效:
#!/bin/bash
for ip in $(cat ips.txt); do
if [ "1" == "$(ping -c 1 $ip | grep 'packets transmitted' | cut -d ' ' -f 4)" ]; then
echo $ip
fi
done
在; then
语句之后需要if [ ... ]
(同样适用于elif
,而不是else
),以及语句的最后一个括号和声明的内容。此外,这似乎只使用单个括号工作正常,这可能更便携(请参阅here)。
适用于Bash 4.2.47
答案 1 :(得分:1)
是。如果您愿意,可以使用换行符代替;
,但始终需要then
关键字。
if [ "1" == "$(ping -c 1 $ip | grep 'packets transmitted' | cut -d ' ' -f 4)" ]
then echo $ip
fi
# or
if [ "1" == "$(ping -c 1 $ip | grep 'packets transmitted' | cut -d ' ' -f 4)" ]
then
echo $ip
fi