標籤:array shell
思路,產生一個隨機數組,然後按按照數組的元素將檔案中行的重新輸出1、隨機數組的產生 看書的時候感覺很是簡單。第一次用卻有點無從下手。 首先是定義,shell中的變數是弱變數,可以隨時定義。 arr=(`seq 57`) 建立一個1..57的一個數組,注意一定要加括弧,否則定義不成數組。 也可以使用for迴圈的方式為數組動態賦值。 for ((i=0;i<57;i++)) #有空格 do arr[$i]=$(($i+1)) done 再次是產生隨機數 使用內部變數$RANDOM,產生的是0-32767。 #!/bin/bash arr=(`seq 57`) let "a=$RANDOM%57" let "b=$RANDOM%57" echo "a="$a echo "b="$b tmp=${arr[$a]} arr[$a]=${arr[$b]} #賦值的時候arr[$a],不要寫成${arr[$a]} arr[$b]=$tmp echo ${arr[@]} 將上面的過程迴圈10000次 44 13 48 53 22 15 35 28 1 31 8 49 4 34 6 55 20 32 26 40 18 37 16 43 9 27 25 42 2 3 50 11 56 46 24 41 7 12 54 30 45 47 17 23 33 10 51 19 52 38 57 14 29 36 39 5 212、打亂檔案行 #!/bin/bash arr=(`seq 57`) for ((i=0;i<10000;i++)) do let "a=$RANDOM%57" let "b=$RANDOM%57" tmp=${arr[$a]} arr[$a]=${arr[$b]} arr[$b]=$tmp done #echo ${arr[@]} for i in ${arr[@]} do j=0 while read line #注意讀取檔案的寫法 do ((j++)) if [ "$i" -eq "$j" ];then echo "i=$i,j=$j:$line" echo $line >> list1.txt break fi done < backup.txt done 通過上述的指令碼,感覺即使把書看完了,知道了一些東西,還是不行,重要的是不停的練習。即使是很簡單的東西,如數組,if判斷等,不寫用的時候只能是眼高手低,無從落筆。
shell 打亂檔案行