经典shell-脚本实例
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#! /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
印出该数值,然后再次要求用户输入数值。直到用户输入"end"停止。
#!/bin/sh
unset var
while [ "$var" != "end" ]
do
echo -n "please input a number: "
read var
if [ "$var" = "end" ]
then
break
fi
#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"
tar jxvf $1
;; gz)
tar zxvf
$1
;; *)
echo "wrong file type"esac6.写一个脚本以方便用户查询 rpm 的
相关信息。这个脚本首先提示用户选择查询依据,比如文件名,包名,全部等。然后提示用户
选择查询信息,比如包名,包里所包含的所有文件,包的信息等。然后询问是否继续查询,是
while [ $# -gt 0 ]
do
result=`expr $result * $1`
shift
done
echo $result
5.写一个脚本,可以根据参数文件名,以正确的参数调用 tar 来解压缩 tar.gz 或 tar.bz2 文件。
#!/bin/shcase ${1##*.tar.} in bz2)
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"
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
echo "var is $var"
done
//////////////////////////////////////////
#!/bin/sh
unset var
while [ "$var" != "end" ]
do
echo -n "please input a number: "
read var
for rpmpackage in $*;
do
if [ -r "$rpmpackage" ];
then
echo "=============== $rpmpackage =============="
/bin/rpm -qip $rpmpackage
else
echo "ERROR: cannot read file $rpmpackage"
read op
case $op in
C)
echo "your selection is Copy"
;;
D)
echo "your selection is Delete"
;;
samHale Waihona Puke Baidui
2004.4.19
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
done
echo $sum
#! /bin/bash
echo "*******************************"
echo "Please select your operation:"
echo " 1 Copy"
echo " 2 Delete"
echo " 3 Backup"
echo "*******************************"
则循环刚才的过程,否则退出。
#!/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."
if [ "$var" = "end" ]
then
break
fi
echo "var is $var"
done
3. 写一个脚本,利用循环和 continue 关键字,计算 100 以内能被 3 整除的数之和
4.一个函数,利用 shift 计算所有参数乘积,假设参数均为整数
#! /bin/sh
result=1
#break
done
# !/bin/bash
# list a content summary of a number of RPM packages
# USAGE: showrpm rpmfile1 rpmfile2 ...
# EXAMPLE: showrpm /cdrom/Thizlinux/RPMS/*.rpm
# #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."
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
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"
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"
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:",要求用户输入数值,然后打
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
印出该数值,然后再次要求用户输入数值。直到用户输入"end"停止。
#!/bin/sh
unset var
while [ "$var" != "end" ]
do
echo -n "please input a number: "
read var
if [ "$var" = "end" ]
then
break
fi
#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"
tar jxvf $1
;; gz)
tar zxvf
$1
;; *)
echo "wrong file type"esac6.写一个脚本以方便用户查询 rpm 的
相关信息。这个脚本首先提示用户选择查询依据,比如文件名,包名,全部等。然后提示用户
选择查询信息,比如包名,包里所包含的所有文件,包的信息等。然后询问是否继续查询,是
while [ $# -gt 0 ]
do
result=`expr $result * $1`
shift
done
echo $result
5.写一个脚本,可以根据参数文件名,以正确的参数调用 tar 来解压缩 tar.gz 或 tar.bz2 文件。
#!/bin/shcase ${1##*.tar.} in bz2)
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"
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
echo "var is $var"
done
//////////////////////////////////////////
#!/bin/sh
unset var
while [ "$var" != "end" ]
do
echo -n "please input a number: "
read var
for rpmpackage in $*;
do
if [ -r "$rpmpackage" ];
then
echo "=============== $rpmpackage =============="
/bin/rpm -qip $rpmpackage
else
echo "ERROR: cannot read file $rpmpackage"
read op
case $op in
C)
echo "your selection is Copy"
;;
D)
echo "your selection is Delete"
;;
samHale Waihona Puke Baidui
2004.4.19
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
done
echo $sum
#! /bin/bash
echo "*******************************"
echo "Please select your operation:"
echo " 1 Copy"
echo " 2 Delete"
echo " 3 Backup"
echo "*******************************"
则循环刚才的过程,否则退出。
#!/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."
if [ "$var" = "end" ]
then
break
fi
echo "var is $var"
done
3. 写一个脚本,利用循环和 continue 关键字,计算 100 以内能被 3 整除的数之和
4.一个函数,利用 shift 计算所有参数乘积,假设参数均为整数
#! /bin/sh
result=1
#break
done
# !/bin/bash
# list a content summary of a number of RPM packages
# USAGE: showrpm rpmfile1 rpmfile2 ...
# EXAMPLE: showrpm /cdrom/Thizlinux/RPMS/*.rpm
# #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."
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
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"
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"
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:",要求用户输入数值,然后打