2个简单shell脚本(if,while,case语句)

实验要求:

1、编写一个名为sum.sh的脚本,提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和

2、编写一个名为tar.sh的脚本,用来解压.tar.gz或.tar.bz2格式的压缩文件,要求采用case语句

实验步骤:

(一)

vi sum.sh

#!/bin/bash

# this is sum

while :      #循环条件为真,等同于while true,如果没有exit 0或者break 则一直执行循环

do

read -p  "请输入一个1-100的整数: " nu   #把屏幕输出的数字赋值给变量nu

expr $nu + 0 &> /dev/null     #此条语句作用是判断这个数字是否为0或者不是整数,并且不在屏幕显示这个数

if [ $? -ne 0 ] || [ $nu -ge 100 ]   #如果上条语句是非0的结果则表示错误,或者这个数大于等于100也不符合实验要求

then   echo "您输入的$nu不符合要求请重新输入:"  #提示错误信息要求重新输入

else        #不是以上结果则执行下面的语句

s=0 i=1     #给变量初始化赋值

while [ $i -le $nu ]      #因为当输入的数字小于100都要执行相加,所以当i大于这个数时停止循环

do

s=$(expr $s + $i)  #s从0开始,i从1开始,把每次循环的结果赋值给s然后继续和i相加,一直加到输入的整数

let i++      #每循环一次i+1

done

echo "1-$nu之间的整数和是:$s"  #将结果输出,停止循环

break

fi

done

验证结果:

(二)

vi tar.sh

#!/bin/bash

# this is test

read -p "请输入您想解压的压缩文件:" f    #将输入的文件名称赋值给变量f

s=$(file $f | awk ‘{print $2}‘)      #判断这个文件是哪种格式的压缩文件

case $s in   #若结果为gzip则用gzip解压

gzip)

echo "将用gzip工具为该文件解压"

tar -zvxf $f

;;

bzip2)       #若结果为bzip2则用bzip2解压

echo "将用bzip工具为该文件解压"

tar -jxvf $f

;;

*)           #其他结果则表示不是压缩文件,屏幕输出错误信息

echo "不是标准的压缩文件"

esac

验证结果:

时间: 2024-08-05 03:37:15

2个简单shell脚本(if,while,case语句)的相关文章

Shell脚本中执行sql语句操作

这篇文章主要介绍了Shell脚本中执行sql语句操作mysql的5种方法,本文讲解了将SQL语句直接嵌入到shell脚本文件中.命令行调用单独的SQL文件.使用管道符调用SQL文件等方法,需要的朋友可以参考下 对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的结果美化,需要进一步完善和调整.以下为具体的示例及其方法. 1.将SQL语句直接嵌入到sh

shell脚本循环执行mysql语句

参考资料:Shell脚本中执行mysql语句 需求:数据库里有张数据表存储的是用户对电影的评价(user_id movie_id rating time),但是我现在要每部电影的总评分. 解决方法: 1).写个sql文件test.sql:use movie_recommendation;select distinct movie_id from T_user_movie_rating_map; 2).在终端输入mysql -uroot -p123456 -e < test.sql > movi

Shell脚本中执行mysql语句

对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的结果美化,需要进一步完善和调整.以下为具体的示例及其方法. 1.将SQL语句直接嵌入到shell脚本文件中 --演示环境 [[email protected] ~]# more /etc/issue CentOS release 5.9 (Final) Kernel \r on an \m   [e

shell脚本解析5----循环语句

一.for循环 for var in [ list ] do #code block done $var是循环控制变量,[list]是var需要遍历的一个集合,do/done对包含了循环体.如果do和for被写在同一行,必须在do前面加上“;”,如:for $var in [list]; do 例如: #!/bin/bash for day in Sun Mon Tue Wed Thu Fri Sat do echo $day done 执行结果: 如果列表被包含在一对括号中,则被认为是一个元素

shell脚本解析4----分支语句(if)

一.条件语句 1. if [expression] then #code block fi 2. if [expression] then #code block else #code block fi 3. if [expression] then #code block else if [expression]    #该处可以替换成elif [expression] then #code block else #code block fi fi 二.条件语句中常用的比较 比较操作    

shell脚本中执行mysql语句的方法

方法一:使用文件标签EOF重定向的方法的: #!/bin/bash  user=root  pass=123456  db=mysql  tablename=user  mysql -s --line-numbers -f -u$user -p$pass -D $db --delimiter=";" -E<  --SELECT host,user from $tablename order by 1;  SELECT host,user from $tablename order

Linux Shell脚本 几种循环语句创建用户的方法

大家好,我是孤云暮雨,今天给大家带来的是"Linux Shell脚本 几种循环语句创建用户的方法" 添加user1-user20用户 for循环: #!/bin/bash for i in {1..20} do useradd user$i echo "user$i Users to add success" done for循环(C风格): #!/bin/bash for ((i=1;i<=20;i++)) do useradd user$i &&a

一个具有菜单选项的简单shell脚本

这是一个简单的shell脚本,里面包含了很多的shell脚本编写技巧,虽然脚本是从别的视频教程里面整理而来,但是对我的以后的编写shell脚本的道路有了一定的铺垫. #!/bin/bash ############# # main menu # ############# main_menu () { echo echo dis_mainmenu="CREATE MINISITE IN CHINAITLAB.COM" curdate=`date "+%Y-%m-%d %T&q

自己敲过的一些简单shell脚本

敲过的一些简单脚本,把他们贴上来偶尔看看,过不了多久应该就会觉得非常小儿科吧,不过应该会对shell脚本的流程控制理解有些帮助. #!/bin/bash//p=176.202.52.////for i in $(seq 1 254)//for ((i=1;i<=5;i++))//do// ping -c2 -i0.1 -w1 $p$i &> /dev/null//if [ $? -eq 0 ];then// echo "$p$i neng ping tong "//