zoukankan      html  css  js  c++  java
  • shell编程

    一---shell是什么?
    shell是一个命令行解释器,是用户和linux内核之间的桥梁,用户可以用shell来启动,挂起,停止甚至编写一些程序。

    比如mkdir /op/tt指令,不能直接拿给linux内核,而是先经过shell命令行解释器,等他翻译完了再交给内核。常用的是bash解释器。

    二---shell脚本的执行方式:
    脚本格式要求
    1)脚本以#!/bin/bash开头
    2)脚本需要有可执行权限。

    脚本的常见执行方式:
    1)输入脚本的绝对路径或相对路径(首先赋予脚本+x权限,才可执行)
    相对路径:./hello.sh
    绝对路径: /root/shcode/hello.sh
    2)sh + 脚本(无需赋+x权限)


    三---shell变量介绍:
    1)shell中的变量分为系统变量和用户自定义的变量
    2)系统变量:$HOME,$PWD,$SHELL,$USER等等,比如:echo $HOME
    3)查看当前shell中所有变量 :set

    A--shell变量的定义
    基本语法
    1)定义变量:变量名=值
    2)撤销变量:unset变量
    3)声明静态变量:readonly变量,注意:不能unset.
    注:定义变量的时候不用加$,但输出变量的时候需要$.

    B--规则:
    1)不能以数字开头
    2)=两遍不能有空格
    3)变量名一般大写

    C--将命令的返回值 赋给变量
    1)A='date' 反引号,运行里面的命令,并把结果返回给变量A。
    2)A=$(date)等价于反引号


    D--设置环境变量(全局变量的别名)
    基本语法:
    1) export 变量名=变量值(将shell变量输出为环境变量(全局变量))
    2)source 配置文件(让修改后的配置文件信息立即生效 )


    E--shell脚本的多行注释:
    :<<!
    内容
    !

    F--位置参数:
    当我们执行一个shell脚本的时候,如果希望获得命令行的参数信息,就可以使用到位置参数变量。
    比如:./myshell.sh 100 200 这个就是一个执行shell的命令行,可以在myshell脚本中获取到参数信息

    基本语法:
    $n(n为数字,0代表命令本身,$1-$9代表第一到第9个参数,十以上的参数,需要用大括号包括,如${10})
    $*(表示全部参数)
    $#(参数个数)
    $@(也代表每个参数,只不过把每个参数分开)


    G--预定义变量
    shell设计者事先设计的变量
    基本语法:
    $$ (当前的进程号PID)
    $!(后台运行的最后一个进程的进程号)
    $?(最后一次执行的命令的返回状态,0表示成功,其它失败)

    四---Shell运算符

    基本介绍:
    学习如何在shell中进行各种运算操作

    A--基本语法:
    1)$((运算式)) $[运算式](推荐) 或者expr m + n
    2)注意expr运算符之间要有空格,如果希望将expr的值赋给某个变量,使用``;
    3)\* ,/,% 乘,除 ,取余

    B--条件判断

    [ condition ](注意condition前后有空格)
    非空返回true,可使用$?验证(0为true,其它为false)
    应用案例
    [hhhh] 返回ture
    [] 返回false
    [ condition ] && echo OK || echo notok 条件满足,执行后面的语句

    C--判断语句:
    常用判断条件
    1)=字符串比较
    2)两个整数的比较
    -lt 小于 (little)
    -le 小于等于
    -gt 大于 (greater)
    -ge 大于等于
    -ne 不等于
    3)按照文件权限进行判断
    -r 读权限
    -w 写权限
    -x 可执行权限
    4)按照文件类型进行判断
    -f 文件存在并且是一个常规的文件
    -e 文件存在
    -d 文件存在并且是一个目录

    应用案例:
    1)"ok"是否等于"ok"
    if [ "ok" = "ok" ]
    then
    echo "equal"
    fi

    2)23是否大于等于22
    if [ 23 -ge 22 ]
    then
    echo "大于"
    fi

    3)/root/shcode/aaa.txt目录中的文件是否存在
    if [ -f /root/shcode/aaa.txt ]
    then
    echo"存在"
    fi


    D--多条件判断格式:

    if[ 条件判断式 ]
    then
    代码
    elif[ 条件 ]
    then
    代码
    fi


    E--case语句

    case $变量名 in
    "值1")
    如果变量的值等于值1,则执行程序1
    ;;
    "值2")
    如果变量的值等于值2,则执行程序2
    ;;
    .....
    *)
    如果变量的值都不是以上的,执行此程序
    ;;
    esac

    应用案例:
    编写testCase.sh脚本,如果输入是1就输出周一
    ,2就输出周二,其它值就输出其它

    #!/bin/bash

    case $1 in

    "1")
    echo "周一"
    ;;
    "2")
    echo "周二"
    ;;
    *)
    echo "其它日期"
    esac

    F--for循环:
    基本语法1
    for 变量 in 值1 值2 值3...
    do
    代码
    done

    基本语法2
    for ((初始值;循环控制条件;变量变化))
    do
    代码
    done

    案例:输出1-100的和
    SUM = 0
    for((i = 0; i<=$1; i++))
    do
    SUM=$[ $SUM+$i ];
    done
    echo "sum is $SUM"

  • 相关阅读:
    重新开发四则运算器
    结对编程
    四则运算 个人项目整理
    DAY 012--dict(增、删、改、查、合并)
    001--面向对象 V.S 面向过程
    DAY 011--Tuple使用方法汇总
    001--二分法(Binary search)
    DAY 006--查找某个值是否在列表中(二分法)
    DAY 009--str(替换三种方法)
    DAY 008--str(常见判断条件)
  • 原文地址:https://www.cnblogs.com/YXBLOGXYY/p/14341909.html
Copyright © 2011-2022 走看看