shell的脚步总是以这样的一行开头:
#!/bin/bash
这行叫做shebang
顺序执行两个命令,可以$cmd1;cmd2
要验证脚本语法的准确性,可以用bask-nscriptfilename来验证
如果要debug则为bash-xscr.sh
删除老的文件
find /home/wwwroot -type f-mtime +30 -exec rm-f{}\;
这里{}和;都是-exec必须的,加\是防止shell解析;
错误输出
如果看见命令结尾有一个2>/dev/null这是将命令的标准错误输出,即2,定向到null
这就是linux的文件描述符decsriptor
stdin0
stdout1
stderr2
你可以把错误和标准输出分别重定向到两个文件
somecmd2>err.txt1>out.txt
变量
变量既可以做字符也可以做整数,如果是当作整数操作时,要加上let
let"x=$x+1"
不然用x=$x+1就变成后面加上一个+1了
注意变量赋值,等号前后不要有空格!
变量的长度,就是说它有几个字符,${#var}
变量类型:
变量都是作为string存储的,如果要做数学运算,就要用let或者中括号
letresult=no1+no2#这里引用变量不用$了
letreult++
letno1+=6
OR
result=$[no1+no2]#这里对于空格的位置和个数要求很高,中括号里面也可以用$引用
result=$[$no1+100]还有一种方法是用(()),比较烦了
还有方法是expr命令,对于格式要求很高
expr3+4返回7,如果没有加对空格expr3+4就返回“3+4”了!
result=`expr3+4`
result=$(expr$no1+5)
注意上面$加上(),其实也是运行一个命令获取返回值的办法。
注意,如果你要引用变量的值,要放在引号里的话,把它放在双引号里,如果是放在单引号里,不会自动扩展变量的值。
环境变量:
UID,是用户ID,对于root总是0,所以要检查是不是以root身份在运行,
if[$UID-ne0];then
dosomething
fi
输出变量的时候
echo$var
echo${var}
都可以,后者可能是嵌套在双引号里面有用,不容易和其他文字混淆。
数组的定义,可以两种方法
array=(123456)或者
array[0]="a"
array[1]="b"
array[2]="c"
引用数组的值:
echo${array_var[0]}或者echo${array_var[$index]}或者打印所有echo${array_var[*]}
要知道数组长度echo${#array_var[*]}
×××函数
函数定义可以是functionfname(){...}或者直接fname(){...}
引用的时候直接用名字fname,有参数的话加在后面,不用括号
$1$2$3原来使用传递给function的参数
$?表示上次执行的命令返回的值,一般0表示运行正常
循环,判断等顺序的命令:
forvarinlist;
do
commands;#use$var
done
----
whilecondition
do
commands;
done
------
x=0;
until[$x-eq9];
doletx++;echo$x;
done
-----
ifcondition;
then
commands;
fi
-------
ifcondition;
then
commands;
elifcondition;
then
commands
else
commands
fi
--------
在条件判断里面,如果判断string的话,最好是加上双括号
[[$str1==$str2]][[$str1!=$str2]][[$str1>$str2]]
[[-z$str1]]:Returnstrueifstr1holdsanemptystring
[[-n$str1]]:Returnstrueifstr1holdsanon-emptystring
脚本里面运行一个命令或程序,是可把命令程序名称放在变量里的,
看profile运行目录里一系列.sh文件,用了这个方法
for i in/etc/profile.d/&.sh;do
if[-r"$i"];then
.$i
fi
done
Linux对正则表达式支持的很好,如果熟悉的话,工作起来会很方便。
比如对于.conf之类的配置文件,通常里面很多是#开头的注释行。你要看真正有用的配置行的话,就可以用这个命令
grep^[^#]httpd.conf
这里第一个^表示行的开头,中括号里的^表示否,即找出行开头不是#的行

还有很多实用的用法,等以后想到一一补充,呵呵。

sed 里的正则表达式,又有些不同。

小括号和大括号前面都要加上反斜杠,不然就当一个普通字符处理。

\{i\}As *, but matches exactly i sequences (i is a decimal integer; for portability, keep it between 0 and 255 inclusive).      

\{i,j\}

Matches between i and j, inclusive, sequences.

\{i,\}
Matches more than or equal to i sequences.      

\(regexp\)

Groups the inner regexp as a whole,

括号里定义的正则表达式匹配的字符可以引用,

\digitMatches the digit-th \(...\) parenthesized subexpression in the regular expression.  This is called a back reference.  Subexpressions are implicity numbered by counting occurrences of \( left-to-right.      

转载于:https://blog.51cto.com/caozs/202236

Linux 脚本、 正则表达式 等相关推荐

  1. 【Linux入门基础知识】Linux 脚本编写基础

    1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须放在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在 ...

  2. linux 脚本在哪里编写,Linux 脚本编写基础(一)

    1. Linux脚本编写基础1.1语法基本介绍1.1.1开头程序必须以下面的行开始(必须方在文件的第一行):#!/bin/sh符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使 ...

  3. Linux脚本编写基础

    为什么80%的码农都做不了架构师?>>>    1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须放在文件的第一行): #!/bin ...

  4. linux绑定中文域名,linux shell正则表达式如何匹配域名(包含中文域名)

    linux shell正则表达式如何匹配域名(包含中文) shell匹配域名 1. 匹配示例 最近的项目需要校验一下域名格式匹配,百度一下,说明如下: DNS规定,域名中的标号都由英文字母和数字组成, ...

  5. Linux脚本Shell命令

    在向大家详细介绍linux编译之前,首先让大家了解下Linux脚本Shell命令.然后讲解在shell脚本中可以使用任意的unix命令. 语法基本介绍 1.开头 程序必须以下面的行开始(必须方在文件的 ...

  6. Linux脚本:Bash脚本看这一篇就够了

    前言 Linux脚本有很多解析器(Shell),不同解析器要求的脚本语法是不一样的.系统在解析脚本时,如果没有在脚本声明指定解析器,则会采用系统默认解析器来对脚本进行解析.sh是非常重要解析器,历史很 ...

  7. linux脚本编程教程

    linux shell 脚本入门 参考文章位置:http://learn.akae.cn/media/ch31s05.html 1.Linux 脚本编写基础...1 1.1 语法基本介绍...1 1. ...

  8. linux shell正则表达式如何匹配域名(包含中文域名)

    linux shell正则表达式如何匹配域名(包含中文) shell匹配域名 1. 匹配示例 2.使用差别 3.中文域名 4.为什么[\u4e00-\u9fa5]不能匹配中文(**想直接获取匹配包含中 ...

  9. Linux 脚本大师不是人人都可以达到的,但Shell编程基础还是有必要掌握的

      Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,现在逐渐被Python等脚本代替.既然是基本功,那就需要掌握,毕竟学习 Shell 脚本的过程中,还是能了解到很多Linux系统 ...

最新文章

  1. zoj 3762(求三角形的最大高)
  2. 【Flask】Nginx+Gunicorn+Supervisor部署一个Flask项目:步骤总结
  3. 27、jdbc操作数据库(4)
  4. Java基础之写文件——使用多个视图缓冲区(PrimesToFile2)
  5. php xssclean,php – Codeigniter xss_clean困境
  6. python设计思路怎么写_初中信息技术 初识Python教学设计
  7. Uva 140 Bandwidth
  8. elementUI中table中自定义修改时间格式2020-10-26T10:00:00
  9. SaltStack之数据系统
  10. ITIL学习笔记——核心流程之:IT服务连续性管理
  11. 6. LaTeX 参考文献的排版与引用
  12. SQLI DUMB SERIES-10
  13. idea卸载不干净怎么办_Office卸载不干净怎么办?我想你一定需要Mac卸载Office的图文教程!...
  14. 【Unity】使用事件实现自动开关门
  15. 常用的PDF分割压缩软件有哪些?
  16. WiFi手机可以连接,电脑上也能连接,可以微信聊天,但是不能浏览器上网怎么解决?
  17. 光伏辐照和发电功率数据集
  18. 备份恢复的种类以及完全恢复实验
  19. 返回html404字符串,post提交数据后,返回的网页错误404怎么回事。
  20. 激光切割机软件开发如何补充参数

热门文章

  1. STL源码剖析 multiset 和 multimap
  2. C++ Makefile文件详解
  3. Androud 如何有效减少重复代码
  4. 《软件调试分析技术》学习笔记
  5. H.264的码率控制算法
  6. CABAC之手把手教你编码
  7. springboot 中使用 Mybatis 注解 配置 详解
  8. 文件系统:使用 yum 安装软件包
  9. Docker 从Dockerfile 构建镜像 :build 命令的用法
  10. 狗窝里的小日子- 8 ...