shell的意义
shell是Linux里的通用语言,虽然与java等编程语言相比,编程能力不强、语法生僻。但可以与Linux命令无缝结合,在系统管理、运维、日志分析等方便有独立的便利优势。
举例:
- 与Oracle impdump/expdump工具结合,实现整库的导入导出;
- 与Oracle rman工具结合,实现自动备份;
- 用grep实现日志分析,查找发生异常应的表,简直有SQL般畅快的感觉;
- 批量查找头文件、分析包含的函数差异,比手工快n倍。
for的一般结构
for var in lists
do
command;
done
for遍历字符串列表
#!/bin/bash
LOGFILE=./findResult.log
for i in stdio.h errno.h string.h stdlib.h ;
do
echo $i | tee -a $LOGFILE
find /usr/lib/gcc/x86_64-redhat-linux -name $i | tee -a $LOGFILE
find /usr/local/include -name $i | tee -a $LOGFILE
find /usr/include -name $i | tee -a $LOGFILE
done
注意:
字符列表是直接写的,不用单引号、双引号;如果写了,会认为是1个字符串。
用双引号处理特殊字符
for i in I "don't" know if "this'll" work
do
echo word is :$i
done
从命令结果读取
for i in `cat states.txt`
do
echo the word is:$i
done
从文件列表读取
curdir=`pwd`
for i in `ls $curdir`
do
if [ -d "$i" ]
then
echo "$i is a directory"
elif [ -f "$i" ]
then
echo "$i is a file"
fi
done
shell中变量使用注意
1.变量不用声明,直接用
2.变量没有类型
3.赋值给变量名;引用要加$符号
4.""内的变量会识别;’'内的变量不识别;