Shell编程

之前我们提到过,Shell是一个连接用户和操作系统的应用程序,它提供了人机交互的界面(接口),用户通过这个界面访问操作系统内核的服务。Shell脚本是一种为Shell编写的脚本程序,我们可以通过Shell脚本来进行系统管理,同时也可以通过它进行文件操作。总之,编写Shell脚本对于使用Linux系统的人来说,应该是一项标配技能。

互联网上有大量关于Shell脚本的相关知识,我不打算再此对Shell脚本做一个全面系统的讲解,我们通过下面的代码来感性的认识下Shell脚本就行了。

例子1:输入两个整数m和n,计算从m到n的整数求和的结果。

  1. #!/usr/bin/bash
  2. printf 'm = '
  3. read m
  4. printf 'n = '
  5. read n
  6. a=$m
  7. sum=0
  8. while [ $a -le $n ]
  9. do
  10. sum=$[ sum + a ]
  11. a=$[ a + 1 ]
  12. done
  13. echo '结果: '$sum

例子2:自动创建文件夹和指定数量的文件。

  1. #!/usr/bin/bash
  2. printf '输入文件夹名: '
  3. read dir
  4. printf '输入文件名: '
  5. read file
  6. printf '输入文件数量(<1000): '
  7. read num
  8. if [ $num -ge 1000 ]
  9. then
  10. echo '文件数量不能超过1000'
  11. else
  12. if [ -e $dir -a -d $dir ]
  13. then
  14. rm -rf $dir
  15. else
  16. if [ -e $dir -a -f $dir ]
  17. then
  18. rm -f $dir
  19. fi
  20. fi
  21. mkdir -p $dir
  22. index=1
  23. while [ $index -le $num ]
  24. do
  25. if [ $index -lt 10 ]
  26. then
  27. pre='00'
  28. elif [ $index -lt 100 ]
  29. then
  30. pre='0'
  31. else
  32. pre=''
  33. fi
  34. touch $dir'/'$file'_'$pre$index
  35. index=$[ index + 1 ]
  36. done
  37. fi

例子3:自动安装指定版本的Redis。

  1. #!/usr/bin/bash
  2. install_redis() {
  3. if ! which redis-server > /dev/null
  4. then
  5. cd /root
  6. wget $1$2'.tar.gz' >> install.log
  7. gunzip /root/$2'.tar.gz'
  8. tar -xf /root/$2'.tar'
  9. cd /root/$2
  10. make >> install.log
  11. make install >> install.log
  12. echo '安装完成'
  13. else
  14. echo '已经安装过Redis'
  15. fi
  16. }
  17. install_redis 'http://download.redis.io/releases/' $1