使用Sam Ruby给我的一个改编的例子 ,我已经调整了,所以我可以展示我想要达到的目标。
app1=$(someapp -flag | grep usefulstuff | cut -c 5-10) if [$app1 = (someapptwo -flag | grep usefulstuff | cut -c 20-25)]; then mkdir IPFolder-1 elif ...blah blah fi
我可以使用grep如上所示,或者我吠叫错误的树? 还是应该看起来像这样的一些东西:
app1=$(someapp -flag | grep usefulstuff | cut -c 5-10) app2=$(someapptwo -flag | grep usefulstuff | cut -c 20-25) if [$app1 = $app2]; then mkdir IPFolder-1 elif ...blah blah fi
至少在其他炮弹中,你需要对空间更加小心; 方括号是一个命令名称,需要与前面和后面的单词分开。 您还需要(在某些经典的shell中)将变量嵌入到双引号中:
app1=$(someapp -flag | grep usefulstuff | cut -c 5-10) if [ "$app1" = "$(someapptwo -flag | grep usefulstuff | cut -c 20-25)" ] then mkdir IPFolder-1 elif ...blah blah then : do this instead... fi
您可以在一行中完成所有操作(呃,因为我尽可能地避免了水平滚动条):
if [ "$(someapp -flag | grep usefulstuff | cut -c 5-10)" = \ "$(someapptwo -flag | grep usefulstuff | cut -c 20-25)" ] then mkdir IPFolder-1 elif ...blah blah then : do this instead... fi
或者你可以用两个单独的命令捕获它:
app1=$(someapp -flag | grep usefulstuff | cut -c 5-10) app2=$(someapptwo -flag | grep usefulstuff | cut -c 20-25) if [ "$app1" = "$app2" ] then mkdir IPFolder-1 elif ...blah blah then : do this instead... fi
更新:添加了一些额外的引号。 也可以引用任务:
app1="$(someapp -flag | grep usefulstuff | cut -c 5-10)"
不会有任何伤害; 这对于bash
来说并不是绝对必要的(但是对于古老的Bourne shell来说可能是必须的)。
您需要通过预先添加$来引用表达式的值:
... if [ "$app1" = "$(someapptwo -flag | grep usefulstuff | cut -c 20-25)" ]; then ...