Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 如何在for循环中获得成功_Loops_For Loop_Variables_Grep_Skip - Fatal编程技术网

Loops 如何在for循环中获得成功

Loops 如何在for循环中获得成功,loops,for-loop,variables,grep,skip,Loops,For Loop,Variables,Grep,Skip,与此抗争 for i in `cat services.txt` do if ! grep -q $i; then echo " $i Is NOT Running" else echo " Checking $i on `hostname`..." ps aux | grep -i $i | awk '{print $1, $11}'| cut -d' ' -f1-2| sort echo -e " " sleep 4 fi done 块只是挂起-我无法捕捉成功/失败的格雷普 如果在serv

与此抗争

for i in `cat services.txt`
do
if ! grep -q $i; then
echo " $i Is NOT Running"
else
echo " Checking $i on `hostname`..."
ps aux | grep -i $i | awk '{print $1, $11}'| cut -d' ' -f1-2| sort
echo -e " "
sleep 4
fi
done
块只是挂起-我无法捕捉成功/失败的格雷普

如果在services.txt中找不到字符串。。。脚本挂起。。。如果找不到,我希望grep跳过它

services.txt只包含一个单词


谢谢

脚本挂起的原因是grep-q$i命令正在等待输入。您可以尝试在shell中单独运行该命令,并验证它是否提示输入

将if语句中的命令更改为ps aux | grep-i$i可以解决您的问题


注:ps aux | grep-i$i也将grep列为流程之一。确保通过管道将该流程排除到另一个grep ps aux | grep-i$i | grep-v“grep”

以下是工作代码

checkservices() {
cat >$HOME/services.txt <<EOF
ganglia
hbase
hdfs
hive
hue
livy
mapred
test-missing-service
mysql
oozie
presto
spark
yarn
zeppelin
EOF

for i in `cat $HOME/services.txt`
do 
if `ps -ef  | grep ^$i | grep -v grep >/dev/null`
then 
i=$(echo "$i" | awk '{print toupper($0)}')
echo "$i -- is running on `hostname`"
echo ""
sleep 2
else 
i=$(echo "$i" | awk '{print tolower($0)}')
echo "$i -- IS NOT running on `hostname` error"
echo ""
fi
done
}

谢谢Vijay-我后来意识到了这一点,但这仍然是挑战-感谢您的时间和投入。我将在下面发布工作代码,通过它,它将告诉你一些问题。Ed,非常感谢你,这是一个很好的工具和帮助。我上了年纪,从来没有对那些新方法感兴趣,因为我的方法很有效。但这解释了如何以及为什么要这样做。非常感谢