脚本语句介绍和练习题一

一、if、case语句篇

PS:脚本现在是本人的弱项,此篇主要写一下做过的一点脚本题,都是一些基础难度不是很大的题,现在写出来也算是回顾一下吧,以后有更实用更专业的脚本可能会继续更新。




1.条件选择if语句

选择执行:
 注意:if语句可嵌套 

单分支
         if 判断条件;then
         条件为真的分支代码
 fi 

 双分支
         if 判断条件; then
             条件为真的分支代码
 else
             条件为假的分支代码
 fi

 多分支
 if 判断条件1; then
     条件为真的分支代码
elif 判断条件2; then
     条件为真的分支代码
elif 判断条件3; then
     条件为真的分支代码
else
     以上条件都为假的分支代码
fi
     逐条件进行判断,第一次遇为“真”条件时,执行其分支, 而后结束整个if语句




2.if示例

这个例子是用脚本计算从1开始相加到一个正整数的和

[[email protected] ~/bin]#cat ./jisuan.sh
#!/bin/bash
#Filename:jisuan.sh
#date 2018-03-17
#Author:宛若天堂
#--------------------------
read -p " 请输入正整数的值: " ab
if [[ "$ab" =~ ^[0-9]+$ ]];then
jieguo=` seq -s+ 1 $ab |bc `
    echo "从1开始计算到您输入的值的和为:$jieguo"
        else
            echo "请输入正确的数字"
fi
[[email protected] ~/bin]#./jisuan.sh
 请输入正整数的值: 100
从1开始计算到您输入的值的和为:5050
[[email protected] ~/bin]#seq -s+ 1 100 |bc
5050

if语句后面的“ $ab =~ ^[0-9]+$ ” 是用来判断输入的内容是否为正整数。

再来一个比大小的脚本,$# -ne 2 意思是说给脚本的参数不是两个就立刻退出。

测试结果

PS:这个脚本有一点BUG,就是还未判断其它字符比如输入aa bb 应该也有个退出状态(待断剑重铸之日,骑士归来之时



3、条件判断case语句

case 变量引用 in  case支持glob风格的通配符
case var in     var变量
    patten 1)   匹配模式1 a|b|c  |或的意思
    command...  需要执行的命令
    ;;      命令执行完毕
    patten 2)
    command...
    ;;
    *)      默认值,没有匹配的模式
    command...
    ;;
esac            代表case语句的结束




4、case例题

[[email protected] /app/lianxi]#cat yuema.sh
#!/bin/bash
read -p "今晚约吗:" yu
case $yu in
[Yy][eE][sS])
    echo "那好吧"
    ;;
[Nn][oO])
    echo "伤心了"
    ;;
*)
    echo "请你圆润的离开我的视线"
esac

这里解释一下,回答"yes"和“no”时会有多种大小写的可能出现,这样写无论大小写的回答都能匹配到关键字,而最后的*)是指没匹配到的就回答echo后面的语句啦

二、for循环语句

1、for循环

for 变量名 in 列表;do
        循环体
done
执行机制:
依次将列表中的元素赋值给“变量名”; 每次赋值后即执 行一次循环体; 直到列表中的元素耗尽,循环结束

列表生成方式:
(1) 直接给出列表
(2) 整数列表:
        (a) {start..end}
        (b) $(seq [start [step]] end)
(3) 返回列表的命令
        $(COMMAND)
(4) 使用glob,如:*.sh
(变量引用);
        [email protected], $*

先来个很简单的例子,也是大家见到最多的一种


从1开始每次相加1,直到循环到10为止。

再来一个ping网段的脚本,先查看一下IP地址

可以看到(虚拟级)仅主机的IP是192.168.80网段的,为省时间脚本里我只写了和仅主机范围左右的了

[[email protected] /app/lianxi]#cat wangduan.sh
#!/bin/bash
#需要ping别的网段就改net后面的变量就行了
net=192.168.80
up=0
down=0
for i in {120..130}
do
    if  ping -c1 -w1 $net.$i &> /dev/null ;then
    echo $net.$i UP ;
        let up++ ;
else
    echo $net.$i down;
        let down++ ;
fi

done
echo "up的一共有$up"
echo "down的一共有$down"
unset net

#{ } 不开子进程 小括号( ) 会开子进程
ps:let ++ up 是指每次$i循环以后的结果(Up)每次加1,down同理

三、总结

此篇中的几个例题难度都不是很大,而且还有while循环 、until循环循环、控制语句continue、循环控制语句break、循环控制shift命令等等还未提及,此篇有基础的就不用看了,我这个渣渣菜鸟尚未搞定它们,待我后续更新!

原文地址:http://blog.51cto.com/11566825/2090715

时间: 2024-10-14 19:42:58

脚本语句介绍和练习题一的相关文章

第二百六十五节,xss脚本攻击介绍

xss脚本攻击介绍 Cross-Site Scripting(XSS)是一类出现在 web 应用程序上的安全弱点,攻击者可以通过 XSS 插入一 些代码,使得访问页面的其他用户都可以看到,XSS 通常是可以被看作漏洞的.它允许攻击者绕过安全机 制,通过尝试各种不同的方法插入恶意代码,攻击者可以得到敏感页面的权限,会话,cookies,或者其 他的东西,XSS 分为三类 XSS 分类: 非持久性,持久性和基于 Dom(此类可以是持久的,也可以是不持久的) 非持久性: 非持久性 XSS 也被称为反射

<06>变量使用前易犯错误总结+if语句介绍及基本格式+if-else语句及嵌套+if语句的高级用法+if语句的使用注意点+arc4random_uniform 函数导入一个头文件<stdlib.h>+

1)变量要初始化 -1 0  ,或者1 依据程序而定 ---------------------------------- if语句介绍及基本格式 分支语句结构 1)if 格式: if(表达式/常量/变量){ 语句块1; } 原理: 1)先计算小括号中的表达式的值 真(1) 会执行 大括号中的语句 假(0) 不会执行 大括号中的语句 2) switch 1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) { 4 5

重新发现Oracle太美之awr相关脚本简单介绍

大家知道在$ORACLE_HOME/rdbms/admin下,有如下的相关脚本(我的环境为11.2.0.4.2): [[email protected] ~]$ cd $ORACLE_HOME/rdbms/admin [[email protected] admin]$ ls -ltr awr* -rw-r--r-- 1 oracle oinstall  1999 Oct 24  2003 awrrpt.sql -rw-r--r-- 1 oracle oinstall 49166 Sep  1

程序结构和分支语句介绍

程序的结构及分类 分支语句介绍 if语句介绍 switch语句介绍 循环语句介绍 程序的结构及分类 程序的结构化是一个设计思想,规定了一套方法,是程序具有合理的结构,以保证和验证程序的正确性.这种方法要求程序设计者布恩那个随心所欲的编写程序,而要按照一定的结构形式来设计和编写程序.他的一个重要目的是使程序具有良好的结构,使程序易于设计,易于理解,易于调试修改,以提高设计和维护程序工作的效率. 结构化程序设计的三种基本结构是:顺序结构.选择结构(分支结构).循环结构. 顺序结构表示程序中的各操作是

Oracle insert all语句介绍

Oracle 中insert语句的高级用法,INSERT ALL 语句介绍: 1.无条件insert all 全部插入 CREATE TABLE t1(product_id NUMBER, product_name VARCHAR2(80),MONTH NUMBER); INSERT INTO t1 VALUES(111, '苹果',1); INSERT INTO t1 VALUES(222, '橘子',1); INSERT INTO t1 VALUES(333, '香蕉',1); COMMIT

oracle监控脚本语句

查看碎片程度高的表 SELECT segment_name table_name, COUNT(*) extents FROM dba_segments WHERE owner NOT IN ('SYS', 'SYSTEM') GROUP BY segment_nameHAVING COUNT(*) = (SELECT MAX(COUNT(*))                     FROM dba_segments                    GROUP BY segment_n

Oracle中的sql脚本语言中的循环语句介绍

--sql脚本语言的循环介绍:--1.goto循环点.declare  x number;begin  x:=0;--变量初始化:  <<repeat_loop>>--设置循环点.  x:=x+1;  dbms_output.put_line(x);--循环体  if x<9 then            --进入循环的条件.    goto repeat_loop;   --用goto关键字引导进入循环.    end if;end; --2.for循环. declare

春哥的nginx systemtap调试脚本简单介绍

http://card.weibo.com/article/h5/s#cid=2304185311ad2d0102v9gd&vid=0&extparam=&from=1110006030&wm=0&ip=111.23.134.60 http://blog.sina.cn/dpool/blog/s/blog_5311ad2d0102v9gd.html 2015-01-22 19:45阅读 659 其实下面要说的没多少硬货,算是个自己这些日子使用春哥写的那几个syste

第三章: 简单Sql语句介绍

SQL概述 结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系统:同时也是数据库脚本文件的扩展名. 从上可以看出我们数据库相关工作职位大概两种:DBD和DBA DBD:数据库开发 DBA:数据库管理 SQL 是1986年10 月由美国国家标准局(ANSI)通过的数据库语言美国标准,接着,国际标准化组织(ISO)颁布了SQL正式国际标准.1989年4月,ISO提出了具