Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Bash-IP-IF-THEN-ELSE语句_Linux_Bash_Unix_Scripting_Grep - Fatal编程技术网

Linux Bash-IP-IF-THEN-ELSE语句

Linux Bash-IP-IF-THEN-ELSE语句,linux,bash,unix,scripting,grep,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

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

我原以为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...

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

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

注意:在Ubuntu11.10上,我不得不使用cut-c21-34,根据需要进行调整。

小心,如果配置是本地化的,也许这就是为什么Sam必须剪切21-34而不是7-17

使用
LANG=ifconfig
在任何地方使用英语

看来我知道了


(与其说是回答,不如说是评论。)

我不确定你的问题是什么。每个盒子的执行步骤是否完全不同?它们是具有不同路径、名称等的相同命令吗?您开始编写的脚本是否遇到了一些特定问题?“帮助”如何解决?你想让我们做什么?你的问题是什么?那么,我们应该如何从一个脚本中推断出你的意图呢?你自己承认,这个脚本不能准确地表达你的意图。这可能是一个更简单的获取IP的方法:
ifconfig eth0 | grep-oP'(?谢谢你,山姆!这正是我想要的。更简单(更可靠)获取地址的方法是安装
ifdata
并使用
ifdata-pa eth0