0

谁能解释我如何使这些 num1 和 num2 成为 2 美元和 3 美元,以便我可以更改我的 ping 公式的开始和结束编号?无需更改我的公式中的任何内容。

num1=1
num2=255

until [ -z $1 ] 

  case in "$1" in 

               a) $2="$num1"
                  $3="$num2" ;;
   [0-9]*-[0-9]*) $num1=${1%-*} 
                  $num2=${1#*-}

  esac
done

for ip in $(seq $num1 $num2); do
  ping -c 1 -w 1 192.168.1.$ip>/dev/null; && eho "192.168.1.$ip is up" ||:;
done
4

1 回答 1

0

Look up indirection in the bash manual. Obscurely, ! introduces variable indirection.

$ a=hello
$ var=a
$ echo ${!var}
hello

Edit

num1=1
num2=255
case in "$1" in 
a)
    num1=$2;
    num2=$3
    ;;
[0-9]*-[0-9]*)
    num1=${1%-*} 
    num2=${1#*-}
    ;;
esac

for ip in $(seq $num1 $num2); do
    ping -c 1 -w 1 192.168.1.$ip>/dev/null && echo "192.168.1.$ip is up" ||:;
done
于 2012-09-03T15:30:42.167 回答