拆分一个字符串并从中获取第三个字段?

时间:2017-01-08 20:22:52

标签: linux bash shell scripting

我在多台机器上运行我的shell脚本,所有这些机器都可以在不同的数据中心。

  • 如果计算机位于abc数据中心,那么我根本不想睡觉并继续前进到shell脚本中的下一行。
  • 如果机器在def数据中心,那么我想睡30分钟,然后我将移动到shell脚本的下一行。
  • 如果机器在pqr数据中心,那么我想睡60分钟,之后我将移动到shell脚本的下一行。

我的机器名称是这样的,它将始终如您所见,数据中心名称始终位于.host.com之前,它将只是这样。

machineA.abc.host.com
machineB.def.host.com
machineC.pqr.host.com
machinef-12341.testra.abc.host.com
.....

在我的下面的shell脚本中,我已经将机器名存储在HOSTNAME变量中,那么如何从shell脚本中提取数据中心名称并应用上述条件?我需要在.host.com之前提取数据中心名称,所以我需要从最后开始?

#!/usr/bin/env bash

HOSTNAME=$hostname

.....

// I want to execute this line after the above if/else if logic
echo "Hello World"

最好的方法是什么?我可以将这些行分成变量,但是如何得到我需要的相关部分然后在这里应用if / elseif逻辑?

1 个答案:

答案 0 :(得分:0)

testloop中的两种不同解决方案:

hosts="machineA.abc.host.com machineB.def.host.com machineC.pqr.host.com machinef-12341.testra.abc.host.com"
for testhost in ${hosts}; do
   echo "sed ${testhost}: $(sed 's/.*\.\([^.]*\).host.com$/\1/' <<< "${testhost}")"
   echo "cut ${testhost}: $(rev <<< "${testhost}"|cut -d"." -f3 | rev)"
done