关于变量的几个问题:
1、shell编程由于和命令行有莫大的关系,所以对空格等字符比较敏感。
2、定义变量 value=xx 而不能像 value = xx 这样出现空格。
3、通过 export value 可以将value变成环境变量,使其子进程也可以使用该变量。
4、环境变量多为大写,普通变量为小写
5、一般通过 value = $(shell 命令) 将输出结果赋值给value
6、$#代表参数个数,$1,$2,......代表对应第几个参数
常用的逻辑:
条件:
-e 文件是否存在
-f 是否存在且为文件
-d 是否存在且为目录
-eq 是否相等
-nq 是否不等
-gt 是否大于
-lt 是否小于
判断:
if [ "条件1" -o "条件2" ];then if [ "条件1" ] || [ "条件2" ];then
命令; = 命令;
fi fi
case $1 in
"条件1" )
命令段1
;;
"条件2" )
命令段2
;;
* )
命令段3
;;
esac
循环:
while [ "循环条件" ]
do
命令段;
done
for value in xxx1 xxx2 xxx3
do
命令段;
done
for ( ( i=0 ; i<10; i++ ) )
do
命令段;
done
正则表达式:
't[^a-z]st' : 第二个字母不是a-z的对象 (^取反符,a-z为选取对象)
'go\{2,5\}g': 限定o的重复次数为2到5个。
^ : 放在括符外面为行首符。
$ :为行尾符。
. : 有个任意字符。
* : 重复前一个 0到无数次
常用工具
cut -d '分隔符' -f 区域 获取分割过后的某块区域
cut -c 2-12 获取每行2到12之间字符
grep -n 查找字符串
sort 排序工具
wc 显示字符数和行数
sed 和 awk