繁体   English   中英

Shell 脚本 - 无法将随机值分配给变量

[英]Shell Scripting-Unable to assign random value to a variable

我正在尝试使用下面的脚本根据给定的输入生成和打印 IP。但是我在执行输入后找不到命令:输入 IP:155.169.10 范围:10 总计:4 实际:testing.sh:第 15 行:155.55.10.11 :找不到命令testing.sh:第15行:155.55.10.12:找不到命令testing.sh:第15行:155.55.10.13:找不到命令testing.sh:第15行:155.55.10.14:找不到命令testing.sh:第 15 行:155.55.10.15:未找到命令预期结果:155.55.10.11 155.55.10.12 155.55.10.13 155.55.10.14

 #!/bin/bash
        echo "enter IP: xxx.xxx.xx"
        read ip;
        echo "enter range"
        read range;
        echo "total"
        read total;
        count=1
        while [ $count -le $total ];
        do
        num=$(expr $range + $count)
        #echo "$ip"".$num"
        IP=$("$ip"".$num")
        echo $IP
        count=$(expr $count + 1)
        done                   

如评论所述,删除不需要的子外壳 - IP="$ip.$num"

由于它是bash ,您还可以从一些性能调整中受益。 试试这个 -

#!/bin/bash
declare -i range total num count=1
read -p "enter IP: xxx.xxx.xx: " ip;
read -p "enter range: " range;
read -p "total: " total;
while (( count < total ));
do  num=$(( range + count++ ))
    IP="$ip.$num"
    echo "$IP"
done                   

我将输入验证留作另一个问题。 :)

更新

好吧,为了好玩...
这应该自己验证输入 -

#!/bin/bash
declare -i count node
read -p "enter starting IP: xxx.xxx.xxx.xxx: " ip;
IFS=. read -a node <<< "$ip"
for n in 0 1 2 3
do if [[ -n "${node[4]}" || -z "${node[$n]}" || "${node[$n]}" =~ [^0-9] ]] || (( ${node[$n]} > 255 ))
   then echo "Invalid IP '$ip'"
        exit 1
   fi
done
base="${ip%.*}"
node="${ip##*.}"
read -p "How many do you want? " count;
while (( count-- ));
do  echo "$base.$node"
    (( node++ ))
done

这仍然允许创建的 IP 无效,例如如果您从 IP 1.2.3.250 开始并要求再增加 10 个。 也考虑为此写张支票,大声笑

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM