脚本内容如下:
#!/bin/bash
# 將參數值裡的非數字全部換成空白鑑
# edit www.jb200.com
all=(${@//[!0-9]/ })
# 要是處理過的參數量不是 8 個的話... 送出錯誤信息,告知命令可接受的參數格式。並退出。
[ "${#all[@]}" != "8" ] && {
echo "Usage: "
echo "${0##*/} ip.ip.ip.ip/mask.mask.mask.mask"
exit 1
}
# 定義一個 get_add 的 function
get_addr () {
# 要是讀進的第一個 function 參數為 -b ,則設定 op, op1, 與 arg 的變量,以供後面的 $(( $1 $op ($5 $op1 $arg) )) 計算用。
if [ "$1" = "-b" ]; then
# 其結則為 $(( $1 | ($5 ^ 255) )),也就是逐個算出 broadcast address 。
op='|'; op1='^'; arg='255'
# 然後用 shift 拿掉這個 -b 。
shift
# 若沒有 -b 參數,則只定義 op 變量。然則,$(( $1 $op ($5 $op1 $arg) )) 的實際算式就變成 $(( $1 & $5)),這會逐個算出 network address 。
else
op='&'
fi
# 取消變量 address ,以免影嚮其後於 while loop 的咚恪