zoukankan      html  css  js  c++  java
  • Linux 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  
  • 相关阅读:
    caffe常用层: batchNorm层和scale层
    简述configure、pkg-config、pkg_config_path三者的关系
    python删除list中元素的三种方法
    Leetcode 872. Leaf-Similar Trees
    Leetcode 508. Most Frequent Subtree Sum
    Leetcode 572. Subtree of Another Tree
    Leetcode 894. All Possible Full Binary Trees
    Leetcode 814. Binary Tree Pruning
    Leetcode 557. Reverse Words in a String III
    python 多维list声明时的小问题
  • 原文地址:https://www.cnblogs.com/eaststar/p/3146294.html
Copyright © 2011-2022 走看看