有人可以帮忙告诉我为什么这不起作用吗?
我检查了脚本并解决了一些问题,但它仍然无法正常工作,我无法找到错误。
#!/bin/bash
#variabelen
IP="192.168.0."
array=($@)
#functies
阵列出了什么问题?我的linux告诉我第12行有一个语法错误,所以使用该数组,但他并没有告诉我什么。
function Sorteer(){
array=($(printf '%s\n' "$@"|sort -nu))
for i in ${array[@]};do
ping -c -1 "IP"$i
done
}
function Telbij(){
# given number $i +200
b=$(( $i + 200 ))
if (( b > 255 ))
then
echo "Neem kleiner getal";
else
ping -c 1 "IP"$b;
fi
}
function XXYY() {
#ping 65-68 = ping 65 66 67 68
start=${1%-*}
end=${1#*-}
for ((i=start;i<=end;i++));do
ping -c 1 "$IP"$i
done
}
错误在于if else函数:http://prntscr.com/7gr8yf
但我不知道这意味着什么:&#34;提到的解析器错误出现在这个else子句中。&#34;
if [ "$#" -eq 0 ]; then
echo "Er moet minimaal 1 parameter worden meegegeven "
exit 0
else
case
-h -help ) echo "Geef de laatste cijfers van het IP-adres van de pc's om te testen.";;
XX-YY ) XXYY;;
-t ) Telbij;;
- sort ) Sorteer;;
esac
fi
done
答案 0 :(得分:1)
不知道什么特别不起作用,但
在Sorteer
函数中,您应该引用数组扩展以避免重新拆分元素。
尝试更改为以下内容:
function Sorteer(){
array=($(printf '%s\n' "$@"|sort -nu))
for i in "${array[@]}";do
ping -c -1 "IP"$i
done
}
现在您的case
运算符应该是:
case $some_value in
-help ) echo "Geef de laatste cijfers van het IP-adres van de pc's om te testen.";;
XX-YY ) XXYY;;
-t ) Telbij;;
-sort ) Sorteer;;
esac
这也将解决您的if
问题