腳本,實現對八我的的隨機random

 

腳本,實現功能:例如一個小組有八我的,須要隨機選取n我的。用戶執行該腳本,而且用參數傳遞進去數值,做爲須要選取的人數,輸出結果,而後輸出結果:數組

  
  
  
  
  1. #!/bin/bash 
  2. #Author:  
  3. #Date & Time: 2010-12-24-20:42:42 
  4. #Description:  
  5. #Version : 1.0.1 
  6. //定義錯誤輸出函數
  7. usag () { 
  8.    echo -e "Wrong Option or Wrong Value . \033[31m USAG:\033[0m`basename $0` [-n num] ;And number range:0<num<8" 
  9.    exit 1 
  10.         } 
  11.     let NUM=1 //若是用戶不傳遞參數,就默認爲是隨機一我的
  12. //讀取判斷用戶輸入的參數值
  13.     while getopts ":n:" SWITCH ; do 
  14.         case $SWITCH in 
  15.          n) 
  16.            [ $OPTARG -gt 8 -o $OPTARG -lt 1 ] && usag 
  17.            NUM=$OPTARG 
  18.            ;; 
  19.          \?) 
  20.             usag 
  21.          ;; 
  22.         esac
  23.      done 
  24.  
  25. arr=(guokeqin weiwei niuyue sunhaoyuan zhaoyupo liuxingya gaohuina liyuchao) 
  26.  
  27. if [ $NUM -eq 1 ];then 
  28.   INDEX=$[$RANDOM%8] 
  29.   echo "${arr[$INDEX]}" 
  30. else 
  31.   // ${#arr[*]} 特殊用法,返回arr[]數組內非空值的個數.
  32.  until [ ${#indexarr[*]} -eq $NUM ] ; do 
  33.      tmp=$[$RANDOM%8] 
  34.      echo "${index[*]}"| grep "$tmp" || indexarr[${tmp}]=$tmp
  35. //上面也可不進行判斷直接進行賦值,若是沒有重複則賦值後數組非空值值個數增1,若是重複則覆蓋,非空值個數不變
  36.    done 
  37.   //開始順序輸出數組中非空值部分對應的數組值.
  38.    for I in $(seq 1 8 );do 
  39.     let I-- 
  40.     [ ${indexarr[$I]} -eq $I ] &>/dev/null && echo "${arr[${indexarr[$I]}]}" 
  41.    done 
  42. fi 
  43.  


 測試結果: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

相關文章
相關標籤/搜索