使用我调整过的example given to me by 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
答案 0 :(得分:7)
至少在其他炮弹中,你需要对空间更加小心;方括号是命令名称,需要与上一个和后一个单词分开。您还需要(再次在经典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来说可能是必要的。)
答案 1 :(得分:3)
您需要通过添加$:
来引用表达式的值...
if [ "$app1" = "$(someapptwo -flag | grep usefulstuff | cut -c 20-25)" ]; then
...