bik*_*ben 2 linux bash shell grep if-statement
使用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
Run Code Online (Sandbox Code Playgroud)
我可以使用上面显示的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
Run Code Online (Sandbox Code Playgroud)
至少在其他炮弹中,你需要更加小心空间; 方括号是命令名称,需要与上一个和后一个单词分开.您还需要(再次在经典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
Run Code Online (Sandbox Code Playgroud)
你可以在一行中完成所有操作(好吧,两个因为我尽可能避免使用水平滚动条):
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
Run Code Online (Sandbox Code Playgroud)
或者您可以使用两个单独的命令捕获来执行此操作:
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
Run Code Online (Sandbox Code Playgroud)
更新: 添加了一些额外的报价.也可以引用作业:
app1="$(someapp -flag | grep usefulstuff | cut -c 5-10)"
Run Code Online (Sandbox Code Playgroud)
不会造成伤害; 它并不是绝对必要的bash(但对于古老的Bourne shell来说可能是必要的).