1 文件比较运算符
-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]
-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]
-f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]
-L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]
-r filename 如果 filename可读,则为真 [ -r /var/log/syslog ]
-w filename 如果 filename可写,则为真 [ -w /var/mytmp.txt ]
-x filename 如果 filename可执行,则为真 [ -L /usr/bin/grep ]
filename1-nt filename2 如果 filename1比 filename2新,则为真 [ /tmp/install/etc/services -nt /etc/services ]
filename1-ot filename2 如果 filename1比 filename2旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]

2 字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)
-z string 如果 string长度为零,则为真 [ -z "$myvar" ]
-n string 如果 string长度非零,则为真 [ -n "$myvar" ]
string1 = string2 如果 string1与 string2相同,则为真 [ "$myvar" = "one two three" ]
string1 != string2 如果 string1与 string2不同,则为真 [ "$myvar" != "one two three" ]

shell脚本对空格有严格的规定,赋值语句等号两边不能有空格,而字符串比较,等号两边必须有空格

= 与 == 在 [ ] 中表示判断(字符串比较)时是等价的

3 算术比较运算符(只支持数字,不支持字符串,除非字符串的值是数字)
num1-eq num2 等于 [ 3 -eq $mynum ]
num1-ne num2 不等于 [ 3 -ne $mynum ]
num1-lt num2 小于 [ 3 -lt $mynum ]
num1-le num2 小于或等于 [ 3 -le $mynum ]
num1-gt num2 大于 [ 3 -gt $mynum ]
num1-ge num2 大于或等于 [ 3 -ge $mynum ]

4 单引号和双引号的区别

单引号,不进行展开
双引号会展开

5 local用来定义局部变量, 一般用在函数里面
let 用来进行数学运算。

6 shell函数定义,前面可以加function也可以不加。
调用函数时:函数名 $1 $2 ...s
参数个数 : $#
所有参数内容 :$@
$? : 上个命令的退出状态,或函数的返回值。

7 source sh ./区别

source 在当前shell内去读取、执行a.sh,而a.sh不需要有"执行权限"

sh 都是打开一个subshell去读取、执行a.sh,而a.sh不需要有"执行权限" .通常在subshell里运行的脚本里设置变量,不会影响到父shell的。

./ 打开一个subshell去读取、执行a.sh,但a.sh需要有"执行权限"

8 export
export表示将当前shell的变量输出出去, 在新建shell时将会拷贝这些变量
对于同一个shell的不同脚本之间,不需要 export也可以相互访问变量
export的变量,才能在env显示出来

9 dirname //获取脚本所在的文件夹路径
cd $(dirname $0)
DIR=$(pwd)

10 basename
name=$(basename $0)

11 ``倒引号, 单引号'', 双引号 "", 小括号(), 大括号{}

倒引号 : 如果被“倒引号”括起来, 表示里面需要执行的是命令。比如 `dirname $0`, 就表示需要执行 dirname $0 这个命令

双引号 : 被双引号括起来的内容, 里面 出现 $ (美元号: 表示取变量名)  `(倒引号: 表示执行命令)     \(转义号: 表示转义), 其余的才表示字符串。
单引号 : 它会忽略所有被引起来的字符的特殊处理,被引用起来的字符会被原封不动的使用,唯一需要注意的点是不允许引用自身

() 表示里面是需要执行的命令 ,  比如echo $(ls) , 表示先执行ls;

{} 限定变量范围
echo $aa_AA
echo ${aa}_AA

12 统计文件行数
find /demo -name "*.js" |xargs cat|grep -v ^$|wc -l

13 =赋值号前后不能有空格

14 变量命名不能使用系统命令

shell 编程记录的更多相关文章

  1. Linux Shell编程基础

    在学习Linux BASH Shell编程的过程中,发现由于不经常用,所以很多东西很容易忘记,所以写篇文章来记录一下 ls   显示当前路径下的文件,常用的有 -l 显示长格式  -a 显示所有包括隐 ...

  2. Shell编程检测监控mysql的CPU占用率

    shell编程很强大! 网站访问量大的时候mysql的压力就比较大,当mysql的CPU利用率超过300%的时候就不能提供服务了,近乎卡死状态,这时候最好的方法就是重启mysql服务.由于这种事具有不 ...

  3. [转]Windows Shell 编程 第二章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987893】

    第二章Shell的结构  “Shell 编程”的大伞之下有大量的API函数和COM接口.这个种类繁多的‘命令’集允许你用不同的方法对Windows Shell进行编程.函数和接口并不是两种提供相同功能 ...

  4. linux下shell编程示例-获取进程id

    今天初步学习了一下linux下的shell编程,简单记录一下测试用例 1.编辑shell脚本文件如下: #!/bin/bashecho "hello bash linux"echo ...

  5. Shell编程笔记

    Shell编程笔记与Windows下熟悉的批处理类似,也可以将一些重复性的命令操作写成一个脚本方便处理.   修改别人的脚本,运行后遇到个问题 setenv: command not found 查证 ...

  6. linux —— shell 编程(文本处理)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed aw ...

  7. linux —— shell 编程(整体框架与基础笔记)

    导读 关于shell编程基础的学习,网上有很多资源,如果在校图书馆应该也有一些教程,所以这里对于零碎的基础不做详细记录,而只是对一些常用的概念.命令与操作做一个简要的记录,以备方便查找. (本文所有语 ...

  8. Linux 与 unix shell编程指南——学习笔记

    第一章    文件安全与权限 文件访问方式:读,写,执行.     针对用户:文件属主,同组用户,其它用户.     文件权限位最前面的字符代表文件类型,常用的如         d 目录:l 符号链 ...

  9. linux shell编程总结

    linux shell编程总结 本周学习了unix/linux shell编程,参考的是<LINUX与UNIX Shell 编程指南>,David Tansley著:徐焱,张春萌等译,由机 ...

随机推荐

  1. 剑指Offer_编程题之二维数组中的查找

    题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数.

  2. gevent:异步理论与实战[转]

    原创 2018-01-10 大邓 大邓带你玩python gevent库中使用的最核心的是Greenlet-一种用C写的轻量级python模块.在任意时间,系统只能允许一个Greenlet处于运行状态 ...

  3. 详解vue的diff算法

    前言 我的目标是写一个非常详细的关于diff的干货,所以本文有点长.也会用到大量的图片以及代码举例,目的让看这篇文章的朋友一定弄明白diff的边边角角. 先来了解几个点... 1. 当数据发生变化时, ...

  4. Invalid character found in method name. HTTP method names must be tokens

      o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header Note: further occurrenc ...

  5. MySQL(二)MySQL的安装和简单使用

    1.MySQL产品的介绍 MySQL数据库属于MySQL AB公司,总部位于瑞典,后被Oracle收购. 优点: (1)成本低:开放源代码,可以免费使用 (2)性能高:执行很快 (2)简单:很容易安装 ...

  6. 关于python中phantomjs无法访问网页的处理

    笔者使用的系统是linux ubuntu,最近在学习爬虫的过程中遇到了一个抓狂的问题,我尝试使用selenium加phantomjs来登陆网页的时候,Pythony一直提示selenium无法找到元素 ...

  7. linux 显示当前所在文件位置 以及git 分支所在

    function git-branch-name {  git symbolic-ref HEAD 2>/dev/null | cut -d"/" -f 3}function ...

  8. Java 读书笔记 (十六) Java 继承

    例: 开发动物类,其中动物分别为企鹅以及老鼠,要求如下: 企鹅: 属性(姓名,id), 方法(吃,睡,自我介绍) 老鼠: 属性(姓名,id), 方法(吃,睡,自我介绍) 企鹅类: public cla ...

  9. HashMap和LinkedHashMap的区别

    参考:https://blog.csdn.net/a822631129/article/details/78520111 java为数据结构中的映射定义了一个接口java.util.Map;它有四个实 ...

  10. rename_windows.go

    {         if err != nil {             return err         }         return syscall.EINVAL     }     r ...