Shell 学习
1.shell 解释型语言,有很多种解释器。默认是/bin/bash。
Shell脚本第一行要写:
#!/bin/bash
2.shell脚本运行的方法
1)sh **.sh
2)chmod a+x **.sh
./**.sh
注意,一定要写成./**.sh,而不是**.sh。
运行其它二进制的程序也一样,直接写**.sh,linux系统会去PATH里寻找有没有叫**.sh的,而只有/bin,/sbin, /usr/bin,/usr/sbin等在PATH里,你的当前目录通常不在PATH里,所以写成**.sh是会找不到命令的,要用./**.sh告诉系统说,就在当前目录找。
3)sh命令去执行一个shell脚本的时候是可以加-x选项来查看这个脚本执行过程的,这样有利于我们调试这个脚本哪里出了问题。
sh –x **.sh
3.1)#是注释
2);作为命令的分隔符
3)单引号、双引号、反引号
当变量内容带有特殊字符(如空格)时,需要加上单引号
变量内容中本身带有单引号或者引用其他变量的内容,需要用到双引号了
变量内容中需要用到其他命令运行结果则可以使用反引号,在ESC下面。
http://www.92csz.com/study/linux/12.htm
4.定义变量& 使用变量
1)variableName="value",变量名和等号之间不能有空格,注意variableName的值都是String,要是值没有空格什么的,就可以什么不加;否则,用单引号或者双引号
2)使用一个定义过的变量,只要在变量名前面加美元符号($)即可
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
5.定义数组
在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。定义数组的一般形式为:
数组名=(值1 值2 ... 值n)
读取数组元素值的一般格式是:
${数组名[下标]}
#使用@符号可以获取数组中的所有元素
echo ${array_name[@]}
# 取得数组元素的个数
length=${#array_name[@]}
6. test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
http://see.xidian.edu.cn/cpp/view/7004.html
数值测试 | |
参数 | 说明 |
-eq | 等于则为真 |
-ne | 不等于则为真 |
-gt | 大于则为真 |
-ge | 大于等于则为真 |
-lt | 小于则为真 |
-le | 小于等于则为真 |
字符串测试 | |
参数 | 说明 |
= | 等于则为真 |
!= | 不相等则为真 |
-z 字符串 | 字符串长度伪则为真 |
-n 字符串 | 字符串长度不伪则为真 |
文件测试 | |
参数 | 说明 |
-e 文件名 | 如果文件存在则为真 |
-r 文件名 | 如果文件存在且可读则为真 |
-w 文件名 | 如果文件存在且可写则为真 |
-x 文件名 | 如果文件存在且可执行则为真 |
-s 文件名 | 如果文件存在且至少有一个字符则为真 |
-d 文件名 | 如果文件存在且为目录则为真 |
-f 文件名 | 如果文件存在且为普通文件则为真 |
-c 文件名 | 如果文件存在且为字符型特殊文件则为真 |
-b 文件名 | 如果文件存在且为块特殊文件则为真 |
UID用来检查是不是超级用户(UID=0)还是普通用户
7.ifelse
8.case
9.for
10.
date "+%Y%m%d %H:%M:%S"
20140626 02:02:55