[英]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.