1、env显示当前的环境变量

2、PS1='[\u@\h \w \A] \$' 可以设置bash的命令与提示符。

3、echo $$ 显示当前bash的PID号

4、echo $?显示上一条指令的回传值(指令成功回传值为0,其他为非零)
5、unset name 取消变量的定义

6、定义变量语法:

             变量名=变量值
              [注]:等号两边不能留空格,否则代表变量包含空格;若变量本身就包含空格,则整个字符串都要用双引号括起来。

7、引用变量:

                $变量名    或   ${变量名}(强调变量)
       为了区分变量名与命令名,建议所有的变量名都用大写字母表示

8、export命令可以将一个局部变量提供给shell执行的其他命令使用:

export 变量名
export 变量名=变量值

9、内部变量

$?:命令执行后返回的状态(0为正确执行;非0为出错) 可用于检查上一个命令执行是否正确
$$:当前进程的进程号
$!:最近后台进程号
$#:位置参数的数量,$1表示第一个自变量
$0:当前执行的进程名
$1-$9:脚本参数
$*:所有位置参数的内容
 
10、条件测试:
–格式:test conditions  也可以写作 [  conditions ]
  test在以下4种情况下使用:
–字符比较
–两个数值的比较
–文件操作,例如文件是否存在及文件的状态等
–逻辑操作,可以进行and/or,与其他条件联合使用
  test用于计算一个条件表达式的值,经常在条件语句和循环语句中用来判断某些条件是否满足,可以使用很多shell的内部操作符。
11、字符串操作符

常用字符串属性条件判断

string_1=string_2

如果string_1和string_2两个字符串相等则返回真,否则返回假;
string_1!= string_2 如果string_1和string_2两个字符串不相等则返回真,否则返回假;
-z string 如果字符串string的长度为0则返回真,否则返回假;
-n string 如果字符串string长度不为0则返回真,否则返回假;
string 如果字符串string非空返回真,否则返回假。

通常与test结合使用,如:

#!?bin/bash

string_1=a string_2=b

test string_1 = string_2

echo $?

运行应该返回 1  。

12、整数操作符:计算整数表达式

常用的整数关系条件判断
mum_1 –eq num_2 如果num_1和num_2相等则返回真,否则返回假;
mum_1 –ne num_2 如果num_1不等于num_2则返回真,否则返回假;
mum_1 –gt num_2 如果num_1大于num_2则返回真,否则返回假;
mum_1 –lt num_2 如果num_1小于num_2则返回真,否则返回假;
mum_1 –le num_2 如果num_1小于等于num_2则返回真,否则返回假;
mum_1 –ge num_2 如果num_1大于等于num_2则返回真,否则返回假;

例如:

#!/bin/bash

n1=20

n2=30

[  $n1 -eq $n2 ]

echo $?

[ $n1 -gt $n2 ]

echo $?

输出结果分别为 1 和 1

13、文件操作符

常用的文件属性条件判断
-f  fn 如果fn存在且fn为普通文件则返回真,否则返回假。
-b  fn 如果fn存在且fn为块设备则返回真,否则返回假。
-e  fn 如果fn存在则返回真,否则返回假。
-d  fn 如果fn 存在且fn为目录则返回真,否则返回假。
-r  fn 如果fn存在且fn可读则返回真,否则返回假。
-w  fn 如果fn存在且fn可写则返回真,否则返回假。
-x  fn 如果fn存在且fn可执行则返回真,否则返回假。
-O  fn 如果fn存在且被当前用户拥有则返回真,否则返回假。
-L  fn 如果fn存在且fn为符号链接则返回真,否则返回假。

用test检测,用法同字符操作类似 例如: test -w file

14、逻辑操作符

常用的逻辑操作符属性条件判断

- a (逻辑与)格式为”condition1 –a condition2”,若两个条件都为真,则结果为真

- o

(逻辑或):格式为”condition1 –o condition2”,若两个条件中有一个为真,则结果为真
! (逻辑非):格式为”!condition”.当condition为真时,结果为假,当condition为假时,结果为真

连接两个表达式 :如 [ test string1 = string2 -a test -w file ]

15、shell中的引号:

1、单引号(‘):单引号括起来的字符(包括特殊字符)都作为普通字符。

2、双引号:由双引号括起来的字符,除$、\、’、和”这几个字符仍是特殊字符并保留其特殊功能,其余字符仍作为普通字符对待。

 [注]:
  $:用其后指定的变量值来代替这个变量
  \:转义字符,其后面的字符为普通字符。通常需要加\的只有4个字符, $、\、’、和”。
  对于”号,如果没加\,则与前一个“号匹配
3、反引号(`):   与键盘上的~同一个键上的符号。反引号括起来的字符串被shell解释为命令行,执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号部分。

16、通配符

     *:代表任何字符串。例:f*匹配以f打头的任意字符串。
   文件名前的圆点(.)和路径名中的的斜线(/)必须显式匹配。
  例:”*”不能匹配.file,只有”.*”才可以匹配.file。
     ?:代表任何单个字符。
     [ ]:代表指定的一个字符范围,只要文件名中[ ]位置处的字符在[ ]中指定的范围之内,那么这个文件名就与这个模式串匹配。
  例:f[a-d] 或f[abcd]
符号类型 说明
* 当前目录下的所有文件的名称
*Text 当前目录下所有文件中包含Text的文件
 [ab-dm]* 当前目录下所有以a、b、c、d、m开头的文件的名称
 [ab-dm]?
当前目录下所有以a、b、c、d、m开头的且后面只跟
一个字符的文件的名称
/usr/bin/?? 目录/usr/bin下的所有名称为两个字符的文件的名称

17、调试执行 sh -x abc.sh 调试执行abc.sh 。sh -n abc.sh 不执行脚本,只检测语法错误。

18、exit 退出程序执行。正常退出,返回值为0;非0表示非正常退出。例如:exit 0

19、awk命令文件内容提取 例如:检测提取root用户 awk -F: '$3==0 {print $1}' /etc/passwd 其中-F更改分隔符

【转】shell学习笔记(三)——引用变量、内部变量、条件测试、字符串比较、整数比较等的更多相关文章

  1. SHELL学习笔记三

    SHELL学习笔记一 SHELL学习笔记二 SHELL学习笔记三 for 命令 读取列表中的复杂值 从变量读取列表 从命令读取值 更改字段分隔符 用通配符读取目录 which 使用多个测试命令 unt ...

  2. python学习笔记三:函数及变量作用域

    一.定义 def functionName([arg1,arg2,...]): code 二.示例 #!/usr/bin/python #coding:utf8 #coding=utf8 #encod ...

  3. C# LINQ学习笔记三:LINQ to OBJECT之操作字符串

    本笔记摘抄自:https://www.cnblogs.com/liqingwen/p/5814204.html,记录一下学习过程以备后续查用. 一.统计单词在字符串中出现的次数 请注意,若要执行计数, ...

  4. shell学习笔记

    shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...

  5. shell学习笔记汇总

    1.shell脚本中函数使用 函数定义在前,调用在后,顺序反了就没有效果了.函数调用为:函数名 参数列表 函数内部通过以下变量访问函数的参数:shell脚本函数中: $0: 这个脚本的名字 $n: 这 ...

  6. [转帖][Bash Shell] Shell学习笔记

    [Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html  阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...

  7. 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记

    回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...

  8. ES6学习笔记<三> 生成器函数与yield

    为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ...

  9. shell 学习笔记2-shell-test

    一.字符串测试表达式 前面一篇介绍:什么是shell,shell变量请参考: shell 学习笔记1-什么是shell,shell变量 1.字符串测试表达式参数 字符串需要用""引 ...

  10. java之jvm学习笔记三(Class文件检验器)

    java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...

随机推荐

  1. Python文章相关性分析---金庸武侠小说分析

    百度到<金庸小说全集 14部>全(TXT)作者:金庸 下载下来,然后读取内容with open('names.txt') as f: data = [line.strip() for li ...

  2. 使用mysql悲观锁解决并发问题

    最近学习了一下数据库的悲观锁和乐观锁,根据自己的理解和网上参考资料总结如下: 悲观锁介绍(百科): 悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持 ...

  3. PostgreSQL=>递归查询

    PostgreSQL=>递归查询 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/8232073.html 距上次博客更新刚好两周,这两周发生了很多,比如: ...

  4. GATT之Device information Service

    许多开发者都在开发BLE Peripheral设备,当中往往包含本文要着急介绍的Device Information Service(DIS)服务,它是对设备的制作商,设备软硬件版本控制,生产信息披露 ...

  5. [数据分析工具] Pandas 功能介绍(一)

    如果你在使用 Pandas(Python Data Analysis Library) 的话,下面介绍的对你一定会有帮助的. 首先我们先介绍一些简单的概念 DataFrame:行列数据,类似 Exce ...

  6. 关于HTTP请求出现 405状态码 not allowed的解决办法

    最近学爬虫.发现httppost请求目标网站会出现405 状态码,原因为 Apache.IIS.Nginx等绝大多数web服务器,都不允许静态文件响应POST请求 所以将post请求改为get请求即可

  7. php网站在服务器上邮件发送不了,在本地可以

    标签: php邮箱 2015-11-27 13:58 879人阅读 评论(0) 收藏 举报 分类: php(2) 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在做phpmailer发送邮 ...

  8. Java数据结构和算法(十三)——哈希表

    Hash表也称散列表,也有直接译作哈希表,Hash表是一种根据关键字值(key - value)而直接进行访问的数据结构.它基于数组,通过把关键字映射到数组的某个下标来加快查找速度,但是又和数组.链表 ...

  9. servlet入门学习之工作原理解析

    从 Servlet 容器说起 要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 Servlet 容器的关系有点像枪和子弹的关系,枪是为子弹而生,而子弹又让枪有了杀伤力 ...

  10. BIGIP-LTM中的NAT和SNAT

      http://250688049.blog.51cto.com/643101/1095880 一.NAT(Network Address Translation)网络地址转换1.NAT简介 NAT ...