学习shell脚本

Shell脚本其实就是纯文本文件(ASCII,当要编辑文件的内容是时就要具备bash shell命令的相关知识了。在前面已经提过bash了,shell脚本的编写同样需要用到这些注意事项:
@ 如同前面所提到的一样,命令与参数间的多个空白会被忽略。
@空白行与[Tab]也被忽略
@如果读取到一个Enter符(CR),就尝试开始执行该命令
@如果一行太多,可以使用\[Enter]来扩展下一行
@此外,#可作为注释。任何加在#后面的内容都被视为注释不被显示出来
 我们在编写脚本的同时也要养成可良好的习惯,如果程序说明能够更清楚,那么对我们的帮助是很大的,因此我们在每个脚本的文件头处记录好:脚本的功能;脚本的版本信息;历史记录;特殊声明等等。。
善用判断条件
使用text命令的测试功能,要检测系统某些文件或相关属性时,使用text命令就行了。比如说,要检查 /dntsai是否存在,使用 text –e /dmtsai  .-e是老测试一个东西是个否存在。接下来我们来看看哪些标志可以用来判断。我们来制作成表格的形式:
某个文件名的“类型”检测(是否存在),
-e
该“文件名”是否存在
-f
该“文件名”是否为文件
-d
该“文件名“是否为目录
-c
……        是否为字符设备
-b
            是否是块设备
-S
………… 是否为套接字文件
-P
          是否为管道文件
-L
该“文件名”是否为一个链接文件
文件的权限检测,
-r
检测该文件是否为“可读”属性
-w
检测该文件是否为“可写”属性
-x
检测该文件是否为“可执行”属性
-u
检测该文件是否为“SUID”属性
-g
检测该文件是否为“SGID”属性
-k
检测该文件是否具有“Sticky bit”属性
-s
检测该文件是否为“非空白文件
比较两个文件,如text file1 –nt file2
-nt
判断file1是否比file2
-ot
判断file1是否比file2
-ef
判断file1file2是否为同一个文件,可用于判断硬连接,主要判断文件是否均指同一个indoe
判断整数之间的判断,
-eq
两数值相等
-ne
两数值不等
-gt
大于 n1 –gt n2 n1大雨n2
-lt
小于
-ge
大于等于
-le
小于等于
多重判断条件,如 text –r filename –a –x filename
-a
and)两个条件同时成立,如例子filerx权限时,才回传true
-o
or)两个条件任何一个有就成立
!
条件求反,如text ! –x file ,file不具有x权限时,回传true
使用判断符号[ ]
除了text,还可以使用判断符号[ ]来进行数据的判断。需要注意:
l  中括号[ ]内的每一个组件都需要用空格来分隔
l  中括号内的变量,最好用双引号来设置
l  中括号的常量,最好用单引号或者双引号来设置
条件判断
使用ifthen
If [ 条件判断表达式 ]then
当条件表达式成立时,可以执行的命令
fi
l  &&表示AND
l  ||表示or
If [ 条件判断表达式 ]then
   条件判断是成立时,可以执行的命令
else
   条件判断表达式不成立时,可以执行的命令
fi
更复杂的情况:
If [ 条件判断表达式一 ]then
   当条件表达式一成立,可以执行命令
elif 条件表达式二】;then
当二成立时,可以执行的命令
else
当一二不成立的时候,可以执行的命令
       fi
使用case……esac判断
Case  $变量名称in
“第一个变量内容“
程序段
;;
“第二个变量内容“
程序段
;;
*
不包含第一个变量与第二个变量内容的其他程序执行段
exit 1
;;
esac
循环
While do doneuntil do done
While [ condition ]
do
  程序段落
done
 
until [ condition ]
do
  程序段落
done