Bash IP IF THEN ELSE声明

时间:2011-10-18 15:22:24

标签: linux bash unix scripting grep

我需要从多台机器运行一个脚本,但每台机器都需要执行独特的命令。

我认为bash脚本可以做到这一点,但我不太懂这个部门。

我需要的代码看起来类似于下面的代码(或者它会)。我知道它远非完美或功能性,但它真的只是为了帮助表达我想要的东西。

有人可以帮我这个剧本吗?

#/bin/bash
IP= ifconfig eth0 | grep inet | grep -v inet6 | cut -c 7-17 

If [$IP -eq 192.168.32.1]
then mkdir IPFolder-1
more code...
else
if [$IP -eq 192.168.32.2]
then mkdir IPFolder-2
more code...
else
if [$IP -eq 192.168.32.5]
then mkdir IPFolder-5
more code...

2 个答案:

答案 0 :(得分:5)

使用双括号,空格很重要:

IP=$(ifconfig eth0 | grep inet | grep -v inet6 | cut -c 21-34)
if [[ $IP = 192.168.32.1 ]]; then
  mkdir IPFolder-1
elif [[ $IP = 192.168.32.2 ]]; then
  mkdir IPFolder-2
fi

注意:在Ubuntu 11.10上,我必须使用cut -c 21-34,根据需要进行调整。

答案 1 :(得分:0)

小心,ifconfig是本地化的,也许这就是为什么Sam必须削减21-34而不是7-17。

使用LANG= ifconfig随处可用英语。

似乎ifconfig have other quirks知道。

(它应该是一个评论而不是一个答案,但我还不能发表评论。)