shell脚本2——顺序选择语句

流程控制

     顺序执行

     选择执行

     循环执行

顺序执行:

    条件选择:if语句

if语句为选择执行

注意:if语句可嵌套

单分支

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

双分支

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

多分支

if  CONDITION1 ; then
    if-true
elif CONDITION2 ; then
    if-ture
elif CONDITION3 ; then
    if-ture
...
else
    all-false
fi

    条件判断:case语句

case 变量引用 in
    PAT1)
        分支1
        ;;
    PAT2)
        分支2
        ;;
    ...
    *)
        默认分支
        ;;
esac

case 支持glob 风格的通配符:

    *:任意长度任意字符

    ?:任意单个字符

    []:指定范围内的任意单个字符

    a|b:a或b

练习:

1 、写一个脚本/root/bin/createuser.sh ,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id号等信息

#!/bin/bash
#descriptio
#version 0.1
#author gm
#date 20160812
if `id $1 &> /dev/null`;then
    echo "$1 user is exist;"
else
    useradd $1
    echo "useradd $1."
    echo "$1 `id $1`"
fi

[root@CentOS6 bin]# createuser.sh  gao
gao user is exist;
[root@CentOS6 bin]# createuser.sh  test
useradd test.
test uid=522(test) gid=522(test) groups=522(test)

2 、写一个脚本/root/bin/yesorno.sh ,提示用户输入yes或no, 并判断用户输入的是yes 还是no, 或是其它信息

#!/bin/bash
#description
#version 0.2
#author gm
#date 20160812
read -p "please input yes or no: " string
case $string in
    [yY]|[yY][eE][sS])
        echo "user input is yes.";;
    [nN]|[nN][oO])
        echo "user input is no";;
    *)
        echo "user input is other";;
esac

[root@CentOS6 bin]# yesorno.sh
please input yes or no: yse
user input is other
[root@CentOS6 bin]# yesorno.sh
please input yes or no: yes
user input is yes.
[root@CentOS6 bin]# yesorno.sh
please input yes or no: y
user input is yes.

3 、写一个脚本/root/bin/filetype.sh,判断用户输入文件路径,显示其文件类型(普通,目录,链接,其它文件类型)

#!/bin/bash
#description
#version 0.1
#author gm
#date 20160812
read -p "please file path: " path
if [ ! -e $path ] ;then
    echo "$path is not exist."
elif [ -h $path ] ;then
    echo "$path is link file."
elif [ -f $path ] ;then
    echo "$path is common file."
elif [ -d $path ] ;then
    echo "$path is dir file"
else
    echo "$path is other file."
fi

[root@CentOS6 bin]# filetype.sh
please file path: /etc
/etc is dir file
[root@CentOS6 bin]# filetype.sh
please file path: /dev/sda
/dev/sda is other file.
[root@CentOS6 bin]# filetype.sh
please file path: /etc/fstab
/etc/fstab is common file.

4 、写一个脚本/root/bin/checkint.sh, 判断用户输入的参数是否为正整数

#!/bin/bash
#description
#version 0.2
#author gm
#date 20160812
read -p "please ont number of int: " num
testnum=$num
echo $num | grep -qE "^[0-9]+$"
if [ $? -eq 0 ] ; then
    if [ $num -ne 0 ] ; then
        echo "$num is positive integer."
    else
        echo "$num in not positive integer."
    fi
else
    echo "$num is not positive integer."
fi

[root@CentOS6 bin]# checkint.sh
please ont number of int: 123
123 is positive integer.
[root@CentOS6 bin]# checkint.sh
please ont number of int: sdfj
sdfj is not positive integer.
[root@CentOS6 bin]# checkint.sh
please ont number of int: 1.123324
1.123324 is not positive integer.
[root@CentOS6 bin]# checkint.sh
please ont number of int: -123.123
-123.123 is not positive integer.

原创文章,作者:megedugao,如若转载,请注明出处:http://www.178linux.com/36886

(0)
megedugaomegedugao
上一篇 2016-08-18
下一篇 2016-08-18

相关推荐

  • 文本处理sed

    文本处理sed Sed介绍:          处理文本的工具sed ,Stream EDitor, 行编辑器 sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,…

    Linux干货 2017-05-04
  • M20-1扩展正则表达式作业

    1、取本机ip地址 [root@centos6 ~]# ifconfig eth1      Link encap:Ethernet  HWaddr 00:0C:29:35:DD:AB     &nb…

    Linux干货 2016-08-10
  • OpenSSH的应用和利用OpenSSL创建私有CA签证给httpd服务器开起https

    一、OpenSSH     OpenSSH与SSH协议是远程登录的首选连接工具。它加密所有流量,以消除窃听,连接劫持和其它攻击。OpenSSH常常被误认以为与OpenSSL有关系,但实际上这两个项目的有不同的目的,不同的发展团队,名称相近只是因为两者有同样的软件发展目标──提供开放源代码的加密通讯软件。  &…

    Linux干货 2016-04-24
  • linux文件目录详解

    linux目录结构   (且看且不看) 历史上 /usr和 /etc文件夹下既保存静态文件,也保存可变文件,后来有了/var层次结构,/usr下面的可变文件被转移到/var下面。因而/usr现在可以只读的方式挂载(如果它在单独的文件系统上)。 /etc下的可变文件早已转移到/var,因为技术上允许/ 根是系统内核启动后挂载的第一个分区,挂载到根上的…

    Linux干货 2017-05-31
  • python高阶函数与装饰器

    ##**高阶函数**– 函数是python中的一等公民– 函数也是对象,可调用对象– 函数可以作为普通变量、参数、返回值等等– 数学概念y = g(f(x))– 高阶函数满足以下至少一个条件:1.接收一个或多个函数作为参数 2.输出一个函数 ##**举例(计数器)**def counter(base…

    Linux干货 2017-10-23