在脚本里用代码代替交互式输入操作:
参考:http://os.51cto.com/art/200912/167898.htm
1.安装shell工具expect:yum -y install expect*
2.记得在文件头去掉“#!/bin/bash”,并引入“#!/usr/bin/expect”
3.执行时,不能使用sh命令(bash脚本才用这个,即不需要"sh test.sh"),而是直接“./test.sh”即可
如何删除n天前的旧文件:
语句格式:find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;范例:find /tmp -mtime +10 -name "*.*" -exec rm -rf {} \;将/tmp目录下所有10天前带"."的文件删除具体解释:find:查找命令,用来查找指定条件的文件/tmp:想要进行清理的任意目录-mtime:标准语句写法+10:查找10天前的文件,这里用数字代表天数,+30表示查找30天前的文件"*.*":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三-exec:固定写法rm -rf:强制删除文件,包括目录{} \; :固定写法,一对大括号+空格+\+;ps:
shell程序的If-Else语句使用注意事项:
1、if 与[ 之间必须有空格
2、[ ]与判断条件之间也必须有空格3、]与; 之间不能有空格范例:##如果该目录不存在,则创建
if [ ! -d "$backupPath" ];thenmkdir "$backupPath"else##如果该文件不存在
if [ ! -f "$myFile" ]; then
fi ##删除超过指定天数的旧文件##find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;find $backupPath -mtime +1 -name "*.*" -exec rm -rf {} \;fi关于shell脚本如何获取当前路径并保存到变量:
#!/bin/sh
scriptPath1=`pwd` ##注意是单引号scriptPath2=$(cd `dirname $0`; pwd) ##注意是单引号echo "$scriptPath1"echo "$scriptPath2"这两种方式都可以获取脚本程序的当前目录(绝对路径)解释:关于`dirname $0`在命令行状态下单纯执行 $ cd `dirname $0` 是毫无意义的。因为他返回当前路径的".",这个命令要写在脚本文件里才有作用$0:表示当前Shell程序的文件名dirname $0:表示获取当前脚本程序的路径cd `dirname $0`:表示切换到当前脚本程序的目录查看系统目前有哪些版本的shell:cat /etc/shells
系统启动运行的第一个进程是init
Linux Shell 如何 debug :
只需在sh命令后加上参数即可
-n :不要执行 scripts ,查询 scripts 内的语法,若有错误则予以列出!-v :在执行 scripts 之前,先将 scripts 的内容显示在屏幕上;-x :将有使用到的 scripts 内容显示在屏幕上,与 -v 稍微不同!运算符号 代表意义
= 等于
!= 不等于< 小于> 大于-eq 等于-ne 不等于-lt 小于-gt 大于-le 小于或等于-ge 大于或等于-a 双方都成立(and)-o 单方成立(or)-z 空字符串-n 非空字符串export命令:将自定义变量转成环境变量
注意:子进程不会继承父进程的自定义变量