说起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的选项
$?    表示上一个命令退出的状态
$$    表示当前进程编号
$    表示当前程序名称
$!    表示最近一个后台命令的进程编号
$HOME    表示当前用户根目录
$IFS    表示内部的字段分隔符
$LANG    当前locale默认名称
$PATH    环境变量
$PPID    父进程编号
$PWD    当前工作目录
 
$?的参考值
    成功退出
>0    退出失败
1-125    命令退出失败,失败返回的相关值由程序定义(譬如,程序内退出只执行 exit 2,则返回为2)
    命令找到了,但无法执行
    命令找不到
>128    命令因受到信号而死亡

[Linux]Shell的运算符和特殊变量的更多相关文章

  1. Linux shell中一些参数与变量简介

    linux中shell变量$#,$@,$0,$1,$2,$!,$$,$*,$-,$@......等很多个,很容易记错,这里再次整理一下,相关含义解释如下,并附上一个实践截图. 多看几次,多用几次,应该 ...

  2. (二)Linux Shell编程——运算符、注释

    2.7 Shell运算符 Bash 支持很多运算符,包括算数运算符.关系运算符.布尔运算符.字符串运算符和文件测试运算符.原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 ...

  3. Linux shell awk中print及变量使用

    Linux处理文本工具     grep: 过滤文本内容     sed:  编辑文本内容     awk:   显示文本      awk:  Aho Peter Weinberger  Kerni ...

  4. Linux Shell编程(8)——变量详解

    不同与许多其他的编程语言,Bash不以"类型"来区分变量.本质上来说,Bash变量是字符串,但是根据环境的不同,Bash允许变量有整数计算和比较.其中的决定因素是变量的值是不是只含 ...

  5. Linux Shell编程(6)——变量替换

    变量的名字是它的值保存的地方.引用它的值称为变量替换.$让我们仔细地区别变量和变量的值.如果variable1是一个变量的名字,那么$variable1就是引用这个变量的值――即这个变量它包含的数据. ...

  6. Linux Shell编程(7)——变量赋值

    =赋值操作符(它的左右两边不能有空白符) 不要搞混了=和-eq,-eq是比赋值操作更高级的测试.注意:等于号(=)根据环境的不同它可能是赋值操作符也可能是一个测试操作符.例子:简单的变量赋值 #!/b ...

  7. Linux shell 变量 数学 运算

    Abstract : 1)  Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算: 2)Linux shell 中使用 expr 与 ...

  8. linux shell脚本之-变量极速入门与进阶(2)

    1,$$:显示当前的进程id号 ghostwu@dev:~/linux/shell/how_to_use_var$ cat show_pid.sh #!/bin/bash echo $$ ghostw ...

  9. Linux Shell编程、变量、控制语句

    为什么要学习Shell编程 1)Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理. 2)对于JavaEE和Python程序员来说,工作的需要,你的老大会要求你编写一些 ...

随机推荐

  1. 【转载并整理】AJAX XmlHttpRequest对象详解

    一. XMLHttpRequest由来及原生介绍 XMLHttpRequest(XHR)是一个API对象,其中的方法可以用来在浏览器和服务器端传输数据.这个对象是浏览器的js环境提供的.从XHR获取数 ...

  2. Java 8 – TemporalAdjusters examples

    1. TemporalAdjusters Example to move a date to firstDayOfMonth, firstDayOfNextMonth, next Monday and ...

  3. html与表格(table)相关的属性

    <table> 标签定义 HTML 表格.简单的 HTML 表格由 table 元素以及一个或多个 tr.th 或 td 元素组成.tr 元素定义表格行,th 元素定义表头,td 元素定义 ...

  4. Nginx(四):压缩功能详解

    gzip (GNU-ZIP) 是一种压缩技术.经过 gzip 压缩后页面大小可以变为原来的 30%甚至更小. 这样,用户浏览页面的时候速度会快得多.  gzip 的压缩页面需要浏览器和服务器双方都支持 ...

  5. Android 常用算法

    排序算法 简单排序算法 冒泡排序 两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止 直接插入排序 通过 n-i 次关键字间的比较,从 n-i+1 个记录中选出关键字最小的记录,并和第 ...

  6. 分布式系统的那些事儿(四) - MQ时代的通信

    之前在讲RPC通信的各种好处,特别好用,但是RPC并不是万能的,也并不是适用于各种场景的,因为他是同步的:现如今很多场景下的调用都是异步的,系统A调用B后,并不需要知道B的结果,而且对B的结果无所谓, ...

  7. remoting生命周期

    https://www.cnblogs.com/luomingui/archive/2011/07/09/2101779.html

  8. webp技术探索

    不管是 PC 还是移动端,图片一直是流量大头,以苹果公司 Retina 产品为代表的高 PPI 屏对图片的质量提出了更高的要求,如何保证在图片的精细度不降低的前提下缩小图片体积,成为了一个有价值且值得 ...

  9. 按键精灵与逍遥安卓ADB连接重键方法

    1.按键精灵与逍遥安卓ADB连接安装按键精灵与逍遥安卓这两个软件我不用多说了.安装好后把逍遥安卓安装目录下的三个文件adb.exe,AdbWinApi.dll,AdbWinUsbApi.dll 全部复 ...

  10. c++ STL map 结构体

    Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候 ...