zoukankan      html  css  js  c++  java
  • 2、SHELL编程基础(三)

    前面的文章见163blog.

    内部变量和环境变量类似,也是在SHELL  执行前已经定义的变量。可以在SHELL  程序中使用,而不能修改。

    shell元字符

    >             prog >file 将标准输出重定向到文件
    >>         prog >> file
    将标准输出附加到文件
    <             prog <file
    从文件file中获取标准输入
    |            p1 | p2
    p1的标准输出作为p2的标准输入
    <<stringHere Document:
    标准输入从HereDocument读入,直到出现string
    *            
    匹配文件名中的零个或多个字符
    ?           
    匹配文件名中的任何单个字符
    {abc}  
    匹配文件名中abc范围内的任何字符,如0-9a-z都是合法的
    ;           
    命令结束符,例如p1;p2表示先执行p1,再运行p2
    &            
    命令结束符,与; 类似,但不等p1结束
    `...`     
    运行...中的命令,输出的结果代替`...`
    (...)        
    在子shell中执行...中的命令
    {...}     
    在当前shell中执行...中的命令(很少使用)
    $1
    $2等    $0...$9代表shell文件的参数
    $
    变量   shell变量的值
    ${
    变量}   变量的值,为避免在文本连接时混淆
    \               \c
    c 字符作为字符,但\ 后面加换行符无效
    '...'           
    作为文本,不作任何替换
    "..."            
    ... 中的$`...`\ 得到替换后,将... 作为文本
    #              
    表示注释
    变量=值    为变量赋值
    p1&&p2  
    运行p1;若成功,再运行p2
    p1||p2      
    运行p1;若不成功,再运行p2

    ` 命令替换(反撇号)

     

    Shell内部变量

    $#   参数个数 ,从0开始计数
    $*   shell
    的所有参数
    $@  
    类似$*
    $-     shell
    用的选择项
    $?    
    上次执行的命令的返回值
    $$     shell
    的进程标识符
    $!    
    &启动的最后一个命令的进程标识符
    $HOMEcd
    命令的缺省参数
    $IFS   
    参数分隔词的字符表
    $MAIL
    信件文件,当其改变时给出信息youhave mail ... 没用过这个^_^
    $PATH  
    搜索命令的目录表
    $PS1  
    提示符串,缺省为$
    $PS2  
    后继命令行提示符串 ,缺省为>

     

    变量表达式

    bash中,命令test用来完成表达式的比较
    test
    表达式 或[表达式]
    表达式所代表的操作符有字符串操作符、数字操作符、逻辑操作符以及文件操作符。其中文件操作符是一种shell独特的操作符,因为shell里的变量都是字符串,为了达到对文件进行操作的目的,于是才提供了这样的一种操作符。'
      1、字符串比较
      作用:测试字符串是否相等、长度是否为零,字符串是否为NULL(注:bash区分零长度字符串和空字符串)
    常用的字符穿操作符有:
      =比较两个字符串是否相同,同则为“是”!=比较两个字符串是否相同,不同则为“是”
      -n比较字符串长度是否大于零,如果大于零则为“是”
      -z比较字符串的穿度是否等于零,如果等于则为“是”

    !=

    在输入时应注意要有适当的空格。

    If[ $str1 = $str2 ]; then

    echo“Hello”
     2、数字比较
      这里区别于其他编程语言,test语句不使用>?类似的符号来表达大小的比较,而是用整数式来表示这些。
      -eq相等
      -ge大于等于
      -le小于等于
      -ne不等于
      -gt大于
      -lt小于9
      3、逻辑操作!反:与一个逻辑值相反的逻辑值
      -a(and):两个逻辑值为“是”返回值才为“是”,反之为“否”
      -o(or):两个逻辑值有一个为“是”,返回值就为“是”
      4、文件操作"
      文件测试表达式通常是为了测试文件的信息,一般由脚本来决定文件是否应该备份、复制或删除。由于test关于文件的操作符有很多,我们只列举一些常用的。
      -d对象存在且为目录返回值为“是”
      -f对象存在且为文件返回值为“是”
      -L对象存在且为符号连接返回值为“是”
      -r对象存在且可读则返回值为“是”
      -s对象存在且长度非零则返回值为“是”
      -w对象存在且可写则返回值为“是”
      -x对象存在且可执行则返回值为“是”
    5
    、逻辑操作

    ! 求非

    -aand操作

    -oor操作

     

    SHELL字符

    双引号

    这样可以使shell将整个字符串解释为一个整体而不是多个

    单引号

    可以阻止shell进行变量替换和解释特殊字符。对于后一种情况,单引号就量个转义字符,类似于反斜线。

    反斜线

    用作转义字符,可以阻止shell将后续字符解释成特殊字符

    反撇号

    可以通知shell用其执行结果替代字符串

  • 相关阅读:
    C# 实现 Aop [Emit动态生成代理类方式]
    分享一些最近在看的电子书
    Can't connect to your phone. Disconnect it, restart it, then try connecting again
    07,Windows Phone后台代理
    .NET 性能测试工具 性能计数器
    windows 8 metro 开发学习资源链接
    08,Windows Phone 本地存储
    06,Windows Phone 8程序的生命周期
    .NET 性能测试工具 事件跟踪器(ETW)
    LitJSONjson 和net 的完美组合用法
  • 原文地址:https://www.cnblogs.com/mydomain/p/1833799.html
Copyright © 2011-2022 走看看