说起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. opencv 中出现错误 -215:Assertion failed

    cv2.error: OpenCV(4.0.1) D:\Build\OpenCV\opencv-4.0.1\modules\imgproc\src\color.cpp:181: error: (-21 ...

  2. windows开机后键盘失灵(非硬件原因)解决办法

    今天来了,开机时突然发现输入密码时,键盘不管用了,试了一下键盘没问题,插口也没问题,能进入安全模式,很奇怪,昨天好好的今天却不能用了,找人倒腾了大半天也没搞出来,后来用PE盘消掉了密码,总算进入了系统 ...

  3. http realtime response 基于http的实时响应方式的演进

    http http ajax http polling ajax http long-polling ajax html5 server sent events html5 websocket com ...

  4. CentOS 7安装Redis4.0.10

    cd /usr/local/src && wget http://download.redis.io/releases/redis-4.0.10.tar.gz && t ...

  5. 基于Android平台的会议室管理系统具体设计说明书

    会议室管理系统具体设计说明书 第一部分  引言 1.编写目的 本说明对会议室管理系统项目的各模块.页面.脚本分别进行了实现层面上的要求和说明. 软件开发小组的产品实现成员应该阅读和參考本说明进行代码的 ...

  6. Latex中如何设置字体颜色(3种方式)

    Latex中如何设置字体颜色(三种方式)   1.直接使用定义好的颜色 \usepackage{color} \textcolor{red/blue/green/black/white/cyan/ma ...

  7. 如何在Windows环境下安装JDK

    原文链接:http://android.eoe.cn/topic/android_sdk 1. JDK 的下载 JDK有好几个类型版本,我们只需要选择Java SE类型的版本就行了. 进入网页:htt ...

  8. 【SSH】Hibernate关联映射

    一对一关联映射 一对一主键关联映射    一句话:不加字段.主键既是主键又是外键. 一对一单向主键关联映射 配置: <span style="font-family:KaiTi_GB2 ...

  9. NSString和NSMutablestring,copy和strong(转载)

    1.http://www.cocoachina.com/ios/20150512/11805.html 2.http://blog.csdn.net/winzlee/article/details/5 ...

  10. Gradle-修改.gradle默认目录

    在Windows的环境变量中新建一个环境变量设置,GRADLE_USER_HOME,值为D:\Users\shaowei\.gradle,设置完成之后,点击确定,关闭设置窗口.这个时候可以去AS中看下 ...