2012-03-14 98 views
2

的问题是这样的:的bash写一个循环来运行一个命令

有一个叫run脚本,我需要改变的run操作,以使run输出的第2场为0(请注意:这不是run的输出,但它的一部分)。我只是不知道如何判断循环的run输出的第二个字段的值。

有没有人有任何好点子?谢谢。 for循环

command | awk '($2 == 0) {print "zero detected"}' 

论一个:

回答

3

看这个片段:

out=$(command | awk '{print $2}') 
((out)) || echo "zero detected" 

或简单地

command | while read a b c d; do 
    ((b)) || echo "zero detected" 
done 

注: ((...))是算术命令,该命令返回一个如果表达式为非零,则退出状态0;如果表达式为零,则退出1。如果需要副作用(分配),也可用作“let”的同义词。见http://mywiki.wooledge.org/ArithmeticExpression

+0

但怎么看如果该值等于0代码 – user1224398 2012-03-14 00:12:44

+0

看到我的文章编辑 – 2012-03-14 00:14:53

+0

非常感谢您的帮助!我真的需要在算术表达式上做一些功课.. – user1224398 2012-03-14 16:47:29

1

捕捉运行的输出在数组中,并修改这样的第二个元素:

res=($(echo 1 2 3 4)) 
# show whole array 
echo ${res[@]} 
1 2 3 4 
# show element 2 with index 1: 
echo ${res[1]} 
2 
# modify second element: 
res[1]=0 
# verify modified element: 
echo ${res[1]} 
0 
# verify whole thing: 
echo ${res[@]} 
1 0 3 4 

所以你的命令:

res=($(run)) 
res[1]=0 
# usage of manipulated result: 
echo ${res[@]} 
+0

非常感谢。这非常有帮助! – user1224398 2012-03-14 16:44:38

相关问题