zoukankan      html  css  js  c++  java
  • [Linux]Shell的运算符和特殊变量

    说起Shell脚本,免不了用变量。特别是对于这种一堆符号表示变量的语言来说,你不了解一下相关变量的本意,根本无从下手。譬如写个循环遍历,$#就起了好大作用。所以还是有必要记录一下,也是对学习的一个笔记,方便以后查找。

    另外有一些运算符也相当有意思。

    //---------------------分割线,下文为笔记内容-------------------------

    变量相关的命令
    export, readonly
    export:用于修改或打印变量
    readonly:设置变量为只读
     
    替换运算符
    ${var:-word}     如果var存在且非null,返回它的值;否则返回word
    ${var:=word}   如果var存在且非null,返回它的值;否则将word赋值给var,并返回var的值 
    ${var:?word}    如果var存在且非null,返回它的值;否则显示var:word
    ${var:+word}     如果var存在且非null,返回word;否则返回null
     
    注:冒号(:)可省略
     
    模式匹配运算符
    ${var#pattern}    匹配前缀(最小匹配),并返回余下内容
    ${var##pattern}    匹配前缀(最大匹配),并返回余下内容
    ${var%pattern}    匹配结尾(最小匹配),并返回余下内容
    ${var%%pattern}    匹配结尾(最大匹配),并返回余下内容
     
    注:pattern为正则表达式匹配
     
    算术运算符
    Shell的算术运算符基本上与C一致,就不多说了。
    算术运算符可以放置在$((...))里面,也就是内嵌算术,也称为算术展开。譬如 echo $((2>1)) 打印结果为1。(1表示真,0表示假)
     
    特殊变量
    $#    表示变量的个数,常用于循环
    $@    当前命令行所有参数。置于双引号中,表示个别参数
    $*    当前命令行所有参数。置于双引号中,表示将命令行所有参数当初一个单独参数
    $-(连字号)    在引用数给予Shell的选项
    $?    表示上一个命令退出的状态
    $$    表示当前进程编号
    $0    表示当前程序名称
    $!    表示最近一个后台命令的进程编号
    $HOME    表示当前用户根目录
    $IFS    表示内部的字段分隔符
    $LANG    当前locale默认名称
    $PATH    环境变量
    $PPID    父进程编号
    $PWD    当前工作目录
     
    $?的参考值
    0    成功退出
    >0    退出失败
    1-125    命令退出失败,失败返回的相关值由程序定义(譬如,程序内退出只执行 exit 2,则返回为2)
    126    命令找到了,但无法执行
    127    命令找不到
    >128    命令因受到信号而死亡

     

  • 相关阅读:
    mysql数据库的备份和恢复
    安装docker17.06.0版本报错和解决方法
    mysql随笔系列-1
    22_redis哨兵主备切换的数据丢失问题:异步复制、集群脑裂
    21_redis哨兵架构的相关基础知识的讲解
    19_对项目的主从redis架构进行QPS压测以及水平扩容支撑更高QPS
    18_在项目中部署redis的读写分离架构(包含节点间认证口令)
    17_redis replication的完整流运行程和原理的再次深入剖析
    16_redis主从复制原理、断点续传、无磁盘化复制、过期key处理
    15_redis replication以及master持久化对主从架构的安全意义
  • 原文地址:https://www.cnblogs.com/rond/p/3543367.html
Copyright © 2011-2022 走看看