zoukankan      html  css  js  c++  java
  • shell脚本

    1. 写一个脚本,利用循环计算10的阶乘#!/bin/sh
    factorial=1
    for a in `seq 1 10`
    do
           factorial=`expr $factorial * $a`
    done
    echo "10! = $factorial"

    2. 写一个脚本,执行后,打印一行提示“Please input a number:",要求用户输入数值,然后打印出该数值,然后再次要求用户输入数值。直到用户输入"end"停止。#!/bin/sh
    unset var

    while [ "$var" != "end" ]
    do
         echo -n "please input a number: "
         read var
         if [ "$var" = "end" ]
         then
             break
         fi
         echo "var is $var"
    done
    //////////////////////////////////////////
    #!/bin/sh
    unset var
    while [ "$var" != "end" ]
    do
         echo -n "please input a number: "
         read var
         if [ "$var" = "end" ]
         then
             break
         fi
         echo "var is $var"
    done

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

    4.一个函数,利用shift计算所有参数乘积,假设参数均为整数

    #! /bin/sh
    result=1
    while [ $# -gt 0 ]
    do
         result=`expr $result * $1`
         shift
    done
    echo $result

    5.写一个脚本,可以根据参数文件名,以正确的参数调用tar来解压缩tar.gz或tar.bz2文件。#!/bin/shcase ${1##*.tar.} in     bz2)         tar jxvf $1         ;;     gz)         tar zxvf $1         ;;     *)         echo "wrong file type"esac6.写一个脚本以方便用户查询rpm的相关信息。这个脚本首先提示用户选择查询依据,比如文件名,包名,全部等。然后提示用户选择查询信息,比如包名,包里所包含的所有文件,包的信息等。然后询问是否继续查询,是则循环刚才的过程,否则退出。

       


      


    #!/bin/bash
    # favourite OS.       samli          2004.4.19
    echo "What is your favourite OS?"
    select var in "Linux" "UNIX" "Windows" "Other"; do
    echo "You have selected $var."
    #break
    done

    # !/bin/bash
    # list a content summary of a number of RPM packages           samli         2004.4.19
    # USAGE: showrpm rpmfile1 rpmfile2 ...
    # EXAMPLE: showrpm /cdrom/Thizlinux/RPMS/*.rpm

    for rpmpackage in $*;
    do
    if [ -r "$rpmpackage" ];
    then
    echo "=============== $rpmpackage =============="
    /bin/rpm -qip $rpmpackage
    else
    echo "ERROR: cannot read file $rpmpackage"
    fi
    done

    #!/bin/bash
    if [ $# -le 0 ]
    then
    echo "Not enough parameters"
    exit 1
    fi
    #string="2 3 4 5 6"
    #set string
    sum=0
    while [ $# -gt 0 ]
    do
    sum=`expr $sum + $1`
    shift
    done
    echo $sum

    #! /bin/bash
    echo "*******************************"
    echo "Please select your operation:"
    echo " 1 Copy"
    echo " 2 Delete"
    echo " 3 Backup"
    echo "*******************************"
    read op
    case $op in
         C)
           echo "your selection is Copy"
         ;;
         D)
           echo "your selection is Delete"
         ;;
         B)
           echo "your selection is Backup"
         ;;
         *)
           echo "invalid selection"
    esac
    #! /bin/sh
    while true
    do
       echo "*******************************"
       echo "Please select your operation:"
       echo " 1 Copy"
       echo " 2 Delete"
       echo " 3 Backup"
       echo " 4 Quit"
       echo "*******************************"
       read op
       case $op in
            C)
              echo "your selection is Copy"
               ;;
            D)
              echo "your selection is Delete"
              ;;
            B)
             echo "your selection is Backup"
               ;;
            Q)
              echo "Exit ..."
                   break
              ;;
            *)
              echo "invalid selection,please try again"
       esac
    done
    #! /bin/sh
    a=10
    b=20
    c=30
    value1=`expr $a + $b + $c`
    echo "The value of value1 is $value1"
    value2=`expr $c / $b`
    echo "The value of value2 is $value2"
    value3=`expr $c * $b`
    echo "The value of value3 is $value3"
    value4=`expr $a + $c / $b`
    echo "The value of value4 is $value4"
    var4=`expr $value4 - $value2`
    echo $var4


    #! /bin/sh
    sum=0
    for i in $* 
    do
        sum=`expr $sum + $i`
    done
    echo $sum
    abc=123
    echo $abc


    ###定义函数

    example1()

    {

    abc=456

    }

    ###调用函数

    example1

    echo $abc

    abc=234234

    example1

    echo $abc

    ###定义函数,使用参数

    example2()

    {

    echo $1

    echo $2

    }

    ###调用函数,向它传递参数

    example2 abc bbb

    example2 dksdfsdfsfaa bbb

    #!/bin/bash
    echo "please input a file name:"
    read file_name
    if [ -d $file_name ]
    then
    echo "$file_name is a directory"
    elif [ -f $file_name ]
    then 
    echo "$file_name is a regular file"
    elif [ -c $file_name -o -b $file_name ]
    then 
    echo "$file_name is a device file"
    else
    echo "$file_name is an unkonwn file"
    fi

    #! /bin/sh
    read first second third
    echo "the first parameter is $first"
    echo "the second parameter is $second"
    echo "the third parameter is $third"

    #! /bin/sh
    if [ $# -ne 2 ]; then
       echo "Not enough parameters"
       exit 0
    fi

    if [ $1 -eq $2 ]; then
       echo "$1 equals $2"
    elif [ $1 -lt $2 ]; then
       echo "$1 less than $2"
    elif [ $1 -gt $2 ]; then
       echo "$1 greater than $2"
    fi

    #clear
    #:trap "" 2 18 20 24
    #e cho "***********************************************************************"
    #e cho " HI! You changed my root password"
    #e cho " This is a little punishment for you then you can use the shell"
    #e cho " You must answer my three questions and type "yes" or "no" to answer"
    #
    #answer="no"
    #
    #e cho "***********************************************************************"
    #e cho "Please press "Enter" key to continue"
    #read
    #while [ $answer = "no" ]
    #do
    #     echo
    #     echo "1.Are you a boy ? (yes/no)"
    #     read answer
    #done
    #
    #answer="no"
    #
    #until [ $answer = "yes" ]
    #do
    #     echo
    #     echo "2.Are you foolish ? (yes/no)"
    #     read answer
    #done
    #
    #answer="no"
    #
    #until [ $answer = "yes" ]
    #do
    #     echo
    #     echo "3.Do you love me ? (yes/no)"
    #     read answer
    #done
    #
    #e cho "***********************************************************************"
    #e cho
    #e cho "Now ! I know you are a foolish girl and you love me."
    #e cho
    #e cho "So you can continue"
    #e cho
    #e cho "**************************************************************"
    #e cho
    #sleep 3
    #e cho "    (haha ! It is just a joke)"
    i=1
    echo "this time i is not equal to 4"
    while [ $i -le 8 ]
    do
           ((i=i+1))
           if [ $i -eq 4 ]
           then
                  echo "this time i is equal to 4"
                  continue
           fi
           echo "this time i is not equal to 4"
    done
    echo "The command is $0"
    echo "The first argument is $1, the second argument is $2"
    echo "The entire command is $0 $1 $2"
    echo "And there are $# arguments"
    echo "The end of testing"


    #! /bin/sh
    if [ $# -gt 1 ] 
    then
    echo "Too many parameters"
    exit 1
    fi

    if [ $# -eq 0 ] 
    then
    echo "Too few parameters"
    exit 100
    fi

    if [ ! -d $1 ]
    then
    echo "Usage : $0 directory"
    exit 1
    fi

    #for i in $1/*
    #do
    # if [ -x $i -a ! -d $i ]
    #    then
    #     ls $i
    # fi
    #done


    #!/bin/sh

    RPM=/bin/rpm

    option="-q"


    while true

    do

           echo "what to query?"

           select var in "All" "file" "package name"

           do

                  case $var in

                  All)

                         option=$option"a"

                         break

                         ;;

                  file)

                         echo -n "please input file name: "

                         option=$option"f"

                         read argument

                         break

                         ;;

                  package name)

                         echo -n "please input package name: "

                         read argument

                         break

                         ;;

                  *)

                         echo "please choose between 1-3"

                         ;;

                  esac

           done

           echo "what do you want to know?"

           select var in "location" "info" "package name"

           do

                  case $var in

                  location)

                         option=$option"l"

                         break

                         ;;

                  info)

                         option=$option"i"

                         break

                         ;;

                  package name)

                         break

                         ;;

                  *)

                         echo "please choose between 1-3"

                         ;;

                  esac

           done

           ${RPM} $option $argument

           echo "continue? [yes/no]"

           read answer

           if [ answer = "no" ]

           then

                  break

           fi

    done


    #!/bin/sh
    sum=0
    for a in `seq 1 100`
    do
         if [ `expr $a % 3` -ne 0 ]
         then
              continue
         fi
         echo $a
         sum=`expr $sum + $a`
    done
    echo "sum = $sum"
    #!/bin/bash
    ftype=`file "$1"`
    case "$ftype" in
    "$1: Zip archive"*)
    /usr/bin/unzip "$1" ;;
    "$1: gzip compressed"*)
    /bin/gunzip "$1" ;;
    "$1: bzip2 compressed"*)
    /usr/bin/bunzip2 "$1" ;;
    *)
    echo "Sorry, file $1 can not be uncompressed with smartzip." ;;
    esac


    注:上面有一行,for a in `seq 1 10`,其中seq 1 10 , 即列出现1到10之间所有的数字,这一行也可改为:for a in "1 2 3 4 5 6 7 8 9 10", 在用 expr 进行乘法运算时,为了避免 * 被看成匹配符,需要对其进行转义, 用 *

    自动备份数据库脚本两个!

    MySQL:Linux下自动备份数据库的shell脚本 Linux 服务器上的程序每天都在更新 MySQL 数据库,于是就想起写一个 shell 脚本,结合 crontab,定时备份数据库。其实非常简单,主要就是使用 MySQL 自带的 mysqldump 命令。

    脚本内容如下:
    #!/bin/sh
    # File: /home/mysql/backup.sh
    # Database info
    DB_NAME="test"
    DB_USER="username"
    DB_PASS="password"

    # Others vars
    BIN_DIR="/usr/local/mysql/bin"
    BCK_DIR="/home/mysql/backup"
    DATE=`date +%F`

    # TODO
    $BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BCK_DIR/db_$DATE.gz

    然后使用将此脚本加到 /etc/crontab 定时任务中:

    01 5 * * 0 mysql /home/mysql/backup.sh

    好了,每周日凌晨 5:01 系统就会自动运行 backup.sh 文件备份 MySQL 数据库了。

    /home/www/inc/back

    第二个!!!!

        1. #!/bin/sh   
        2. # File: /home/mysql/backup.sh   
        3. # Database info bakupmysql     
        4. DB_USER="user"  
        5. DB_PASS="password"  
        6.   
        7. # Others vars   
        8. DATE=`date +%Y-%m-%d`   
        9. mkdir /home/mysqlbak/$DATE   
        10. BIN_DIR="/usr/local/mysql/bin"  
        11. BCK_DIR="/home/mysqlbak/$DATE"  
        12.   
        13. # TODO   
        14. $BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS discuz > $BCK_DIR/discuz.sql   
        15. $BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS zjblog > $BCK_DIR/zjblog.sql   
        16. $BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS openads > $BCK_DIR/openads.sql  
  • 相关阅读:
    Java 编程基础
    LING 实战
    C# 3.0\3.5 新特性
    EF Code First 入门
    C# 4.0 新特性
    JavaScript学习(二)
    JavaScript学习(一)
    csdn的blog后台程序的导航菜单的实现
    HashTable的遍历
    开通啦
  • 原文地址:https://www.cnblogs.com/hllnj2008/p/3986767.html
Copyright © 2011-2022 走看看