腳本,實現功能:例如一個小組有八我的,須要隨機選取n我的。用戶執行該腳本,而且用參數傳遞進去數值,做爲須要選取的人數,輸出結果,而後輸出結果:數組
- #!/bin/bash
- #Author:
- #Date & Time: 2010-12-24-20:42:42
- #Description:
- #Version : 1.0.1
- //定義錯誤輸出函數
- usag () {
- echo -e "Wrong Option or Wrong Value . \033[31m USAG:\033[0m`basename $0` [-n num] ;And number range:0<num<8"
- exit 1
- }
- let NUM=1 //若是用戶不傳遞參數,就默認爲是隨機一我的
- //讀取判斷用戶輸入的參數值
- while getopts ":n:" SWITCH ; do
- case $SWITCH in
- n)
- [ $OPTARG -gt 8 -o $OPTARG -lt 1 ] && usag
- NUM=$OPTARG
- ;;
- \?)
- usag
- ;;
- esac
- done
- arr=(guokeqin weiwei niuyue sunhaoyuan zhaoyupo liuxingya gaohuina liyuchao)
- if [ $NUM -eq 1 ];then
- INDEX=$[$RANDOM%8]
- echo "${arr[$INDEX]}"
- else
- // ${#arr[*]} 特殊用法,返回arr[]數組內非空值的個數.
- until [ ${#indexarr[*]} -eq $NUM ] ; do
- tmp=$[$RANDOM%8]
- echo "${index[*]}"| grep "$tmp" || indexarr[${tmp}]=$tmp
- //上面也可不進行判斷直接進行賦值,若是沒有重複則賦值後數組非空值值個數增1,若是重複則覆蓋,非空值個數不變
- done
- //開始順序輸出數組中非空值部分對應的數組值.
- for I in $(seq 1 8 );do
- let I--
- [ ${indexarr[$I]} -eq $I ] &>/dev/null && echo "${arr[${indexarr[$I]}]}"
- done
- fi
測試結果:bash
知識:app
1. 數組用法例:ide
集體賦值:ARRAY=(1 2 3 4 5 6 )
單個賦值:ARRAY[3]=6
顯示單個數組值: echo ${ARRAY[3]
函數
顯示數組中全部非空值:echo ${ARRAY[*]} 測試
顯示數組中全部非空值個數:echo ${#ARRAY[*]}ui
2. 變量RANDOM spa
系統自帶的隨機數變量orm
其由系統隨機生成16位id二進制數。須要指定範圍時進行取模。xml