shell入门(1)

写一个shell程序的一般流程
1、把解决问题的所有步骤写在脚本
    #vim myshell.sh
    #!/bin/bash   表示程序有谁来解析   bash 来解析

2、将脚本文件设置为可执行
    # chmod a+x myshell.sh
    # chmod 755 myshell.sh
3、执行
  方法一:直接输入shell脚本的文件名
     ./myshell.sh
  方法二:bash 脚本文件名
    bash ./myshell.sh   一定在脚本的当前目录
    bash /ule/sh/myshell.sh   绝对路径
  方法三:. 脚本名字
    . ./myshell.sh   表示让它的上级shell来执行

-------------------------------------------
如何给shell传参
   
例:
    echo $1   \$1     表示传递第一个参数
    echo $2   \$2     表示传递第二个参数
    echo $3   \$3     表示第三个参数
    echo $#   \$\#    传递参数的个数
    echo $?   \$\?     表示上一个命令执行成功
    echo $$   \$\$    表示进程ID

练习:模拟一个简单的service启动程序
      echo $1  $2  ing.....
    httpd (pid  4560) 正在运行...

------------------------------------------
read:输入语句
    格式  read [option] [var_name]

[option]:
    -p:提示信息
    -s:输入不显示,如同输入密码
    -t n:设置超时,如果N秒不输入,就返回一个非零的退出状态(不成功)
    -n n:设置接受的字符,第二个是自然数

echo:输出语句
    格式:echo[option]  字符串
[option]
    -n:表示不换行
    -e:接受字符的控制信息  \t tab
----------------------------------------------
流程控制
  选择结构:

格式一:
    if [ 条件]
    then
        命令
    fi

作用:判断  条件 是否成立,如果成立。执行命令,如果不成立,什么都不执行。

例:判断变量大小
练习:输入两个数,如何显示最大数.
      输入三个数,显示最小数

---------------------
格式二
   
        if [ 条件]
        then
                命令1
    else
        命令2
        fi

作用:判断  条件 是否成立,如果成立执行命令1,如果不成立,就会执行命令2

练习:
 从键盘上输入一个文件(含路径),判断是否存在,如果存在就提示文件存在,如果不存在,提示文件不存在。

练习:从键盘输入一个数,显示出他的绝对值。
-------------------------------------
格式三:多分支;
    if [ condition1 ]
    then
        commond1
    elif [ condition2 ]
    then
        commond2
    elif [ condition3 ]
    then
        commond3


    ............

    else
        default_commond
    fi

作用:判断condition1是否成立,如果成立执行commond1,如果不成立,
    在判断condition2是否成立,如果成立执行commond2,如果不成立,
    在判断condition3是否成立,如果成立执行commond3,如果不成立,
    ....
    如果上面的条件都不成立,执行default_commond

例:输入考试成绩,判断成绩等级
    90以上   A
    80  B
    70  C
    60  D
    60以下   E

---------------------------------------
多条件表示:
  逻辑与:&&
    if [ condition1 ] && [condition2 ]
    或者
    if [[ condition1  && condition2 ]]
    或者
    if [ condition1  -a condition2 ]

逻辑或: ||
        if [ condition1 ] || [ condition2]
        或者
        if [[ condition1  || condition2 ]]
        或者
        if [ condition1  -o condition2 ]

取反:!
    if [ ! condition ]


例:输入年份,判断是否是润年
  (能4整除,当不能被100整除,或者能被400整除)

--------------------------------------------
格式四:case 多分支

    case var_name in
        value1
        commond1
        ;;
        value2
                commond2
        ;;
                value3
                commond3
                ;;

        .....
        *)
        default_commond
    esac
作用:判断var_name的值是否与下面value值相匹配(相等),如果能找到匹配的value值。则执行他下面的commond ,如果找不到呢,则执行*下面的default_commond

---------------------

例:做个菜单用case

1:显示CPU信息
2:显示内存信息
3:显示硬盘信息
4、退出

按其他键报告选择有误。

--------------------------------------------
分支嵌套:
    分支嵌套即分支中包含分支(if里面还有if)

普通分支:

    if [ 条件]
        then
                命令1
        else
                命令2
        fi
-----------------------
嵌套一:
        if [ condition ]
        then
                if [ condition ]
        then
            commond
        else
            commond
        fi
        else
                commond
        fi

-----------------------------------
嵌套二:
        if [ condition ]
        then
                commond
        else   
                if [ condition ]
                then
                        commond
                else
                        commond
                fi
     
        fi
---------------------------------
嵌套三:
        if [ condition ]
        then
        if [ condition ]
                then
                        commond
                else
                        commond
                fi

        else
                if [ condition ]
                then
                        commond
                else
                        commond
                fi

        fi

-------------------------------------------
另:if [ condition ]  也可一直接跟一个命令

例:简单实现ping命令

练习:写一个脚本,判断vsftpd是否启动,没有启动,就启动它,
启动就不要

1 如何判断vsftpd 是否启动的方法
    netstat -tunlp | grep -w vsftpd
2 输入用户名,判断是否存在

3 实现一个加密程序 a>c b>d c>e  .....

----------------------------------------------
-------------------------------
作业:
1、判断象限
    输入不同的X Y值,显示处于那一个象限。
    排除非法字符:
2、输入一个文件名(含路径),判断文件是否存在,如果存在,判断当前用户对该文件的权限。

















 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值