问题是这样的:
有一个名为run
的脚本,我需要更改run
的操作,使run
输出的第二个字段为0(请注意:它不是run
的输出,但是它的一部分)。我只是不知道如何判断循环的run
输出的第二个字段的值。
有没有人有什么好主意?谢谢。
答案 0 :(得分:3)
请参阅此代码段:
out=$(command | awk '{print $2}')
((out)) || echo "zero detected"
或简单地说:
command | awk '($2 == 0) {print "zero detected"}'
on for for循环:
command | while read a b c d; do
((b)) || echo "zero detected"
done
请注意:
((...))
是一个算术命令,如果表达式非零,则返回退出状态0;如果表达式为零,则返回1。如果需要副作用(赋值),也可以用作" let"的同义词。见http://mywiki.wooledge.org/ArithmeticExpression
答案 1 :(得分:1)
捕获数组中run的输出并修改第二个元素,如下所示:
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[@]}