您的位置:首页 > 运维架构 > Shell

Linux shell 脚本实例

2013-07-18 19:02 323 查看
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

第二个!!!!

#!/bin/sh
# File: /home/mysql/backup.sh
# Database info bakupmysql
DB_USER="user"
DB_PASS="password"

# Others vars
DATE=`date +%Y-%m-%d`
mkdir /home/mysqlbak/$DATE
BIN_DIR="/usr/local/mysql/bin"
BCK_DIR="/home/mysqlbak/$DATE"

# TODO
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS discuz > $BCK_DIR/discuz.sql
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS zjblog > $BCK_DIR/zjblog.sql
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS openads > $BCK_DIR/openads.sql
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: