Bash 編程問題集

1, bash 中各個命令行 各部分含義

$0就是該bash文件名
$?是上一指令的返回值
$*所有位置參數的內容:就是調用調用本bash shell的參數。
$@基本上與上面相同。
"$*"返回的是一個字符串,字符串中存在多處空格。
"$@"返回多個字符串。
$#返回所有位置參數的個數。
 
 cy_get_subnet_from_ip_mask_pair() {
        local ip=$1
        local mask=$2
        if ! cy_check_ip $ip || ! cy_check_ip $mask; then
                cy_err "need IP, Mask (format check failed: $ip,$mask)"
        fi  
        IFS='.' read -a a_ip <<< "$ip"
        IFS='.' read -a n_ip <<< "$mask"
        res=""
        for i in 0 1 2 3; do
                res="${res}.$(( ${a_ip[$i]} & ${n_ip[$i]} ))"
        done
        res=${res:1}/$(cy_netmask_ip_to_number $mask)
        echo $res
}


2,   systemdisksarray=systemdisks
systemdisksarraymaxlen=$maxsystemdiskscount
systemdisksarraylen=`echo "$systemdisks" | awk '{print NF}'`
# array service
array() {
        local disks="$1"  # element into array
        local pretag="$2" # array name
        local index=0


        for var in $disks
        do   
                eval "$pretag$index=$var"
                index=`expr $index + 1`
        done 
}
getarrayelement() {
        newname=${1}${2} # pretag and index , as same as the array()
        eval "echo $`echo $newname`"
}
array "$systemdisks" "$systemdisksarray"




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章