gpt4 book ai didi

linux - Linux 终端中循环内的 IF 语句不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 09:32:13 30 4
gpt4 key购买 nike

目前我正在尝试在 crontab 中执行 bash 文件。但是,命令本身不起作用,这是命令。

for ip in $(seq 3 80); do for ip2 in $(seq 9 254); do count=$(ping -c 1 192.168.$ip.$ip2 | grep icmp* | wc -l) if [ $count -eq 0 ]; then echo "Host unreachable" else php /var/www/phpfile.php 192.168.$ip.$ip2 > 192.168.$ip.$ip2.txt; done; done

当我执行这个命令时控制台显示的错误是这样的:

if: Command not found

我已经检查了括号之间的空格,我也尝试删除它们,但这些解决方案都没有奏效。你能告诉我我的命令有什么问题吗?我错过了什么?

非常感谢您。

最佳答案

你缺少一个 fi 和一些 ;,试试这个:

for ip in $(seq 3 80); do for ip2 in $(seq 9 254); do count=$(ping -c 1 192.168.$ip.$ip2 | grep icmp* | wc -l); if [ $count -eq 0 ]; then echo "Host unreachable"; else php /var/www/phpfile.php 192.168.$ip.$ip2 > 192.168.$ip.$ip2.txt;fi; done; done

最好(为了可读性)将代码分成多行而不是将它们全部放在一行中:

for ip in $(seq 3 80); do
for ip2 in $(seq 9 254); do
count=$(ping -c 1 192.168.$ip.$ip2 | grep icmp* | wc -l)
if [ $count -eq 0 ]; then
echo "Host unreachable"
else php /var/www/phpfile.php 192.168.$ip.$ip2 > 192.168.$ip.$ip2.txt;
fi
done
done

关于linux - Linux 终端中循环内的 IF 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30239614/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com