Shell脚本不会运行

时间:2015-06-14 07:38:23

标签: linux shell ubuntu scripting

有人可以帮忙告诉我为什么这不起作用吗?

我检查了脚本并解决了一些问题,但它仍然无法正常工作,我无法找到错误。

#!/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

1 个答案:

答案 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问题