zoukankan      html  css  js  c++  java
  • shell脚本语法

    其他:

    grep 

    fgrep 不适用真正表达式,速度块

    面向过程:着眼点在过程中

    面向对象:对象

    SHELL脚本编程:

    父shell赋予的变量 在子shell中是无法获取到的

    变量赋值: name=jerry

    变量的引用:$name 也可以使用${name} 大多数情况下{}是可以使用的

    animal=pig

    echo "there are some ${annimal}s"

    echo 'there are some ${annimal}s'              单引用叫做强引用 双引号弱引用

    本地变量

    name=value(生命周期,整个bash)

    局部变量

    local varname=value 作用域 当前代码段

    环境变量: 作用域 当前shell进程及其子进程

    export varname=value 


    脚本在执行时,会启动一个子shell进程,所以当前脚本申明的环境变量是有用的

    命令航中启动脚本会集成当前shell环境变量

    系统自动执行的脚本(非命令行启动)就需要自我定义环境变量

    位置变量

    $1,$2

    特殊变量:

    $?:上一个命令执行状态返回值:

    程序执行:可能有两个返回值 执行状态返回代码:0成功,1-255失败  (1,2,127系统预留,不能随便定义)


    输出重定向:

    >

    >>

    2>

    2>>

    &>

    /dev/null 设备,软件设备,bit bucket 作用:不显示内容,吞噬任何输出 用于消除不想显示的输出

    unset name 取消变量 消除变量所占的内存gc


    查看当前shell的变量

    set

    查看当前shell的环境变量

    printenv

    env

    export


    脚本:命令的堆砌


    条件比较判断

    if[ expression ]

    if[ [ expression ] ]

    test expression

    整数比较:

    -eq 测试两个整数是否相等 比如$A -eq $B  表达式的返回值是0 或者1-255

    -ne 测试两个整数是否不等: 不等,为真,不等为假

    -gt  测试一个数是否大于另外一个数

    -lt   测试一个数是否小于另外一个数

    -ge 大于后者等于

    -le 小于或等于

    ! id user6 && useradd user6 用户不存在时,添加用户user6

    反引号``

    demo:

         #!/bin/bash
    ! id user1 &> /dev/null && useradd user1 && echo "user1" | passwd --stdin user1 &> /dev/null || echo "user1 exits"
    USERS=`wc -l /etc/passwd | cut -d: -f1`
    echo "$USERS users"7


           作用是。如果user1不存在 则添加用户user1并且设置密码为user1 否则则显示user1 exits 。并且显示user数目

    脚本中一大堆的&& || 怎么运算。从左往右看,一个表达式一个表达式看,true && expr1 ,expr1才会运行 ,false || expr1 ,expr1才会运行


    if 判断条件; then

    statement

    statement

    fi

    if 判断条件; then

    statement1

    statement2

    else

    statement3

    fi

    反引号 获取执行的结果

    不写的话一般是获取命令的执行状态返回值

    date +%s

    shell 中的加减乘除

    let c=$a+$b

    c=$[$a+$b]

    c=$(($a+$b))

    c='expr $a + $b'

    提前结束脚本命令 exit; exit是可以返回自定义的脚本 状态码

    exit 0

    文件测试

     文件存在 -e file

     文件文件是否普通文件 -f file

     测试是否是目录 -d path

     -r

    -w

    -x

    [ -e /etc/inittab ]

    测试叫本是否有语法错误

    bash -x 脚本

    $# 多少个参数

    $?参数列表

    $*参数列表

    位置参数

    shift $1 $2

    shift 剔除参数

    字符串比较

    == 相等

    !=不等

    -n string 测试字符串是否为空 ,空则真

    -s string 与上述相反

    脚本用的一些东西

    bin=`dirname "${BASH_SOURCE-$0}"`
    bin=`cd "$bin"; pwd`

    这个能获取脚本所在的路径
    ---------------------
    作者:qqpy789
    来源:CSDN
    原文:https://blog.csdn.net/qqpy789/article/details/49383055
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    STM32f469I discovery烧写demo例程
    dsp5509的中断系统
    DSP5509之采样定理
    DSP5509开发之FPGA接口
    mongodb学习之:安全和认证
    mongodb学习之:GridFS
    tornado之异步web服务一
    mongodb学习之:数据库命令以及固定集合
    docker: Dockerfile命令介绍
    mongodb学习之:聚合
  • 原文地址:https://www.cnblogs.com/duanlinxiao/p/10793470.html
Copyright © 2011-2022 走看看