Linux Bash脚本:IP地址变量';有可能吗?

Linux Bash脚本:IP地址变量';有可能吗?,linux,bash,networking,Linux,Bash,Networking,是否可以将IP地址指向特定的名称?我不介意需要使用什么方法,只是需要一些建议,因为我是bash新手。这样做的原因是我想制作一个脚本来检查输入的IP是针对哪个站点的 e、 g 10.10.100.10=SITECODE因此这里有一个工作代码,$1是console命令中脚本名称后的第一个参数 另外,我有Bash4.4.20版本 您可以这样运行它: ./script.sh 127.0.0.1 输出应为: 爱丽丝 另一种变体是从_ip.txt的文件列表_中读取(该文件不应有额外的换行): #/bin/b

是否可以将IP地址指向特定的名称?我不介意需要使用什么方法,只是需要一些建议,因为我是bash新手。这样做的原因是我想制作一个脚本来检查输入的IP是针对哪个站点的


e、 g 10.10.100.10=SITECODE

因此这里有一个工作代码,$1是console命令中脚本名称后的第一个参数

另外,我有Bash4.4.20版本

您可以这样运行它:

./script.sh 127.0.0.1

输出应为:

爱丽丝

另一种变体是从_ip.txt的文件列表_中读取(该文件不应有额外的换行):

#/bin/bash
输入=$1
而IFS=读-r对;做
KEY=“${pair%%:*}”
如果[$KEY==$INPUT];然后
VALUE=“${pair##*:}”
echo美元价值
fi
完成
您可以在中为主机条目设置静态ip。虽然还不完全清楚你到底在追求什么,但是。。bash不负责将ip转换为名称,这是无关的。为什么要使用数字索引数组而不是关联数组(用于索引的键本身就是字符串)?如果您有
声明-A数组=([“127.0.0.1”]=“Alice”[“127.0.0.2”]=“Bob”)
,您只需在固定时间内查找
${array[127.0.0.1]}
,即可得到
Alice
结果有几种错误——如果您的IFS值包含在任一变量中找到的字符,或者该变量为空,那么它的行为将很糟糕。引用您的字符串,为了实现最佳的可移植性,请使用
=
(POSIX指定的
测试
运算符进行字符串比较)而不是
=
(bash扩展)。因此:<代码> [ $KEY ] =“$输入”…并且还考虑使用所有变量的小写名称,而不只是<代码>配对< /代码>。POSIX指定允许所有大写变量修改shell或其他操作系统提供的工具的行为,而保证名称中至少有一个小写字母的变量不会修改shell或POSIX指定的操作系统提供的工具的行为(请参阅,记住环境变量和常规shell变量共享一个名称空间)。我想你有点自相矛盾,在另一个系统上可能有另一个版本的Bash不支持哈希表。我建议不要在不增加值的情况下使用不可移植的结构。
==
没有任何好处;您编写的代码比使用
=
编写的代码要长,而且还得到了不支持哈希表的代码Hash表/关联数组确实增加了一个好处(在简洁性和性能方面),因此您可以从支付不可移植代码的成本中得到一些回报。
#!/bin/bash
INPUT=$1
ARRAY=( "127.0.0.1:Alice"
        "127.0.0.2:Bob"
        "127.0.0.3:John"
         )

for pair in "${ARRAY[@]}" ; do
KEY="${pair%%:*}"
if [ $KEY == $INPUT ];then
    VALUE="${pair##*:}"
    echo $VALUE    
fi
done
#!/bin/bash
INPUT=$1

while IFS= read -r pair; do
    KEY="${pair%%:*}"
    if [ $KEY == $INPUT ];then
        VALUE="${pair##*:}"
        echo $VALUE
    fi
done < list_of_ip.txt