Linux shell 指令碼執行個體【轉】

來源:互聯網
上載者:User

標籤:discuz   blog   http   使用   os   檔案   

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  
#Linux
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.