加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

linux shell脚本实例--(摘抄)

(2010-12-07 23:37:27)
分类: 计算机知识

鸟哥的私房菜

1 请建立一支 script ,当你执行该 script 的时候,该 script 可以显示∶ 1. 你目前的身份 (用 whoami )  你目前所在的目录 (用 pwd)

  1. #!/bin/bash   
  2. echo -e "Your name is ==> $(whoami)"  
  3. echo -e "The current directory is ==> `pwd`"  

2请自行建立一支程式,该程式可以用来计算『您还有几天可以过生日』

  1. #!/bin/bash   
  2. read -p "Pleas input your birthday (MMDD, ex> 0709): " bir   
  3. now=`date +%m%d`   
  4. if "$bir" == "$now" ]; then   
  5. echo "Happy Birthday to you!!!"  
  6. elif "$bir" -gt "$now" ]; then   
  7. year=`date +%Y`   
  8. total_d=$(($((`date --date="$year$bir" +%s`-`date +%s`))/60/60/24))   
  9. echo "Your birthday will be $total_d later"  
  10. else  
  11. year=$((`date +%Y`+1))   
  12. total_d=$(($((`date --date="$year$bir" +%s`-`date +%s`))/60/60/24))   
  13. echo "Your birthday will be $total_d later"  
  14. fi  

3让使用者输入一个数字,程式可以由 1+2+3... 一直累加到使用者输入的数字为止。

  1. #!/bin/bash   
  2. read -p "Please input an integer number: " number   
  3. i=0   
  4. s=0   
  5. while "$i" != "$number" ]   
  6. do  
  7. i=$(($i+1))   
  8. s=$(($s+$i))   
  9. done   
  10. echo "the result of '1+2+3+...$number' is ==> $s" 

4先查看一下 /root/test/logical 这个名称是否存在; 2.) 若不存在,则建立一个档案,使用 touch 来建立,建立完成后离开; 3.) 如果存在的话,判断该名称是否为档案,若为档案则将之删除后建立一个档案,档名为 logical ,之后离开; 4.) 如果存在的话,而且该名称为目录,则移除此目录!

  1. #!/bin/bash   
  2. if -e logical ]; then   
  3. touch logical   
  4. echo "Just make file logical"  
  5. exit 1   
  6. elif -e logical && -f logical ]; then   
  7. rm logical   
  8. mkdir logical   
  9. echo "remove file ==> logical"  
  10. echo "and make directory logical"  
  11. exit 1   
  12. elif -e logical && -d logical ]; then   
  13. rm -rf logical   
  14. echo "remove directory ==> logical"  
  15. exit 1   
  16. else  
  17. echo "Does here have anything?"  
  18. fi  

5我们知道 /etc/passwd 里面以 : 来分隔,第一栏为帐号名称。请写一苹程式,可以将 /etc/passwd 的第一栏取出,而且每一栏都以一行字串『The 1 account is "root" 』来显示,那个 1 表示行数。

  1. #!/bin/bash   
  2. accounts=`cat /etc/passwd cut -d':' -f1`   
  3. for account in $accounts   
  4. do  
  5. declare -i i=$i+1   
  6. echo "The $i account is \"$account\" "  
  7. done  

6利用循环计算10的阶乘

  1. #!/bin/sh   
  2.     
  3. factorial=1   
  4.     
  5. for in `seq 10`   //1到10之间
  6. do  
  7.         factorial=`expr $factorial \* $a`   
  8. done   
  9.     
  10. echo "10! $factorial"
    7个脚本,执行后,打印一行提示“Please input a number:",要求用户输入数值,然

    后打印出该数值,

    然后再次要求用户输入数值。直到用户输入


    "end"停止
  1. #!/bin/sh   
  2.     
  3. unset var   
  4.     
  5. while   "$var" != "end" ]   
  6. do  
  7.       echo -n "please input number: "  
  8.       read var   
  9.       if "$var" "end" ]   
  10.       then   
  11.           break  
  12.       fi   
  13.       echo "var is $var"  
  14. done   

8 写一个脚本,利用循环和continue关键字,计算100以内能被3整除的数之和

  1. #!/bin/sh   
  2. sum=0   
  3. for in `seq 100`   
  4. do  
  5.       if `expr $a 3` -ne ]   
  6.       then   
  7.             continue  
  8.       fi   
  9.       echo $a   
  10.       sum=`expr $sum $a`   
  11. done   
  12. echo "sum $sum"  

9一个函数,利用shift计算所有参数乘积,假设参数均为整数( 特殊变量$# 表示包含参数的个数)

  1. #! /bin/sh   
  2.     
  3. result=1   
  4. while $# -gt ]   
  5. do  
  6.       result=`expr $result \* $1`   
  7.       shift   
  8. done   
  9. echo $resul   

10一个脚本,可以根据参数文件名,以正确的参数调用tar来解压缩tar.gz或tar.bz2文件。




  1. #!/bin/sh   
  2.     
  3. case ${1##*.tar.} in  
  4.       bz2)   
  5.           tar jxvf $1   
  6.           ;;   
  7.       gz)   
  8.           tar zxvf $1   
  9.           ;;   
  10.       *)   
  11.           echo "wrong file type"  
  12. esac   


  11一个脚本以方便用户查询rpm的相关信息。这个脚本首先提示用户选择查询依据,比如

文件名,包名,全部等。然后提示用户选择查询信息,比如包名,包里所包含的所有文件,

包的信息等。然后询问是否继续查询,是则循环刚才的过


程,否则退出。

#!/bin/sh   

  1. RPM=/bin/rpm   
  2. option="-q"  
  3.     
  4. while true  
  5. do  
  6.         echo "what to query?"  
  7.         select var in   "All" "file" "package name"  
  8.         do  
  9.                case $var in  
  10.                All)   
  11.                        option=$option"a"  
  12.                        break  
  13.                       ;;   
  14.                file)   
  15.                        echo -n "please input file name: "  
  16.                        option=$option"f"  
  17.                        read argument   
  18.                        break  
  19.                       ;;   
  20.                 package\ name)   
  21.                        echo -n "please input package name: "  
  22.                        read argument   
  23.                        break  
  24.                       ;;   
  25.                *)   
  26.                        echo "please choose between 1-3"  
  27.                       ;;   
  28.                esac   
  29.         done   
  30.     
  31.         echo "what do you want to know?"  
  32.         select var in "location" "info" "package name"  
  33.         do  
  34.                case $var in  
  35.                 location)   
  36.                        option=$option"l"  
  37.                        break  
  38.                       ;;   
  39.                info)   
  40.                        option=$option"i"  
  41.                        break  
  42.                       ;;   
  43.                 package\ name)   
  44.                        break  
  45.                       ;;   
  46.                *)   
  47.                        echo "please choose between 1-3"  
  48.                       ;;   
  49.                esac   
  50.         done   
  51.     
  52.         ${RPM}   $option $argument   
  53.     
  54.         echo "continue? [yes/no]"  
  55.         read answer   
  56.     
  57.         if answer "no" ]   
  58.         then   
  59.                break  
  60.         fi   
  61. done  


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有