使用 bash 进行并行测试

Parallel Testing with bash

我有一系列的测试,我不太擅长bash。但这些是我拥有的工具。问题来了。

我需要在回调中搜索字符串。我正在寻找 "From="。如果该字符串存在,我基本上想转到我创建的另一个名为 BAIL 的函数,它会发出一条带有消息的恐慌。

或者我希望它只记录 FROM 字段为空,然后继续。

如果这是 ruby 它将是

( TURE && TRUE ) || TRUE

但是我在bash这里有它:

echo "$inbound_callback" | grep "From=$FROM" || BAIL "IB: FROM was NOT Blocked '$FROM'") || \
LOG "[$FROM -> $TO] IB: Found FROM '$FROM'"

我是否必须用某些东西包裹条件?

您根本不需要外部实用程序。 shell 本身可以检查字符串并执行匹配。

case $inbound_callback in
    *From=*) BAIL "IB: FROM was NOT Blocked '$FROM'";;
    *)       LOG "[$FROM -> $TO] IB: Found FROM '$FROM'";;
esac

这只是在 inbound_callback 的值中的任何位置寻找文字字符串 From=。如果这不是您想要的,也许可以重新表述您的问题以明确条件应该是什么。

你对问题的描述听起来像你想说的

echo "$inbound_callback" | grep -q "From=" &&
BAIL "IB: FROM was NOT Blocked '$FROM'" ||
LOG "[$FROM -> $TO] IB: Found FROM '$FROM'"

(请注意真实情况下的 &&,并使用 grep -q 来避免成功匹配的输出。我完全删除了 $FROM,就像你说的那样想搜索五个字符 From=.)