脚本编程类(数组练习)

SHELL整理汇总:

  • [9-13]Shell系列1――基本概念

  • [9-13]Shell系列2――变量基础

  • [9-13]Shell系列3――分支结构if与case语句

  • [9-13]Shell系列4――循环结构for、while、until及跳出循环

  • [9-13]Shell系列5――条件测试和运算符

  • [9-13]Shell系列6――取算数运算数值

  • [9-13]Shell系列7――函数及参数传递

  • [9-13]Shell系列8――数组


脚本编程练习

1、写一个脚本:定义一个数组,数组元素为/var/log目录下所有以.log结尾的文件的名字;显示每个文件的行数;

#!/bin/bash

declare -a files
files=(/var/log/*.log)
for i in `seq 0 $[${#files[@]}-1]`;
    do wc -l ${files[$i]}
done

执行结果:

wKioL1ZENM3i0yT-AAA5TFCdBmQ915.png


2、写一个脚本,生成10个随机数,并按从小到大进行排序;

#!/bin/bash 

for ((i=0;i<10;i++));do
	rand[$i]=$RANDOM
done

for ((i=0;i<10;i++));
do
    for ((j=9;j>i;j--));
    do
	if [[ ${rand[j]} -lt ${rand[j-1]} ]]
	then 
	    tmp=${rand[j]}
	    rand[j]=${rand[j-1]}
	    rand[j-1]=$tmp
	fi
    done
done

echo ${rand[@]}

执行结果:

wKioL1ZESLWimyKsAAAyk39qyTI358.png


3、写一个脚本,能从所有同学中随机挑选一个同学回答问题;进一步地:可接受一个参数,做为要挑选的同学的个数;

#!/bin/bash
echo "+------------------------------+"
echo "| Please Input Students' Name  |"
echo "| Name shouldn't include space |"
echo "+------------------------------+"
  
read -a student
random=$((RANDOM % ${#student[@]}))
echo "Please ${student[$random]} answer the Question!"

执行效果

wKioL1ZEguLhYQjWAABPsJQcyD8478.png


进一步的可接受一个参数,做为要挑选的同学的个数;

#!/bin/bash

echo "+------------------------------+"
echo "| Please Input Students' Name  |"
echo "| Name shouldn't include space |"
echo "+------------------------------+"

read -a student
read -p "Please Input the number of students to answer quest    ion" num
if [ $num -gt ${#student[@]} ];then
    echo "Error!"
    exit
fi

echo "The following students to answer:"
for ((i=0;i<num;i++));
    do random=$((RANDOM % ${#student[@]}))
       echo ${student[$random]}
       student[$random]=${student[${#student[@]}-1]}
       unset student[${#student[@]}-1]
   done

原理:每次取出一名同学后,假设该同学的数组索引为a,将原来数组中最后索引的数组元素值赋值给 array[a],同时删除最后一个数组元素,这样每次抽出同学后,余下的新数组的元素值就不会重复了。

wKiom1ZEhd2honGtAAA9tGT4wYs432.png


最后:分享几个取随机数的原理

  1. 高级Bash脚本编程指南(取随机数)

    http://www.21andy.com/manual/advanced-bash-scripting-guide/randomvar.html

  2. Bash中生成指定范围的随机数

    http://blog.csdn.net/robertsong2004/article/details/38712227


你可能感兴趣的:(bash)