题解 | #判断输入的是否为IP地址#
判断输入的是否为IP地址
https://www.nowcoder.com/practice/ad7b6dbfab2a4267a9991110c57aa64f
#!/bin/bash
while read line
do
arr=(${line//./ })
if [ ${#arr[*]} -ne 4 ];then
printf "error\n"
else
for ((i=0; i<${#arr[*]}; i++))
do
[ ${arr[${i}]} -gt 255 ] && printf "no\n" && break
done
[ $i == 4 ] && printf "yes\n"
fi
done
排行里的第一名的这个代码是真的好。arr=(${line//./ }): 这一行将line中的点号(.)替换为空格,并将结果存储在名为arr的数组中。这样,arr中的每个元素都是IP地址的一个部分。if [ ${#arr[*]} -ne 4 ];then: 这是一个条件语句,检查数组arr的长度是否不等于4。如果不等于4,说明这不是一个合法的IP地址。for ((i=0; i<${#arr[*]}; i++)): 这是一个for循环,遍历数组arr的每个元素。[ ${arr[${i}]} -gt 255 ] && printf "no\n" && break: 检查数组元素是否大于255。如果是,输出字符串"no",并终止循环。

