设为首页 加入收藏

TOP

shell脚本相关指令
2015-02-02 14:26:52 来源: 作者: 【 】 浏览:7
Tags:shell 脚本 相关 指令

1.bash和source的区别:bash(包括通过路径执行脚本)是non-login状态下,创建子shell进程,执行的shell脚本,因此其间创建的任何变量都将在程序执行完毕后,销毁,即父进程(原来的shell)是无法访问这些变量的;source则直接在当前shell环境下执行该shell脚本,因此脚本申请的变量可以被访问。


2.test -e filename:关于某个档名的文件类型的判断,参数:


?1)-e:是否存在


?2)-f:是否存在且为文本档案


?3)-d:是否存在且为目录


?4)-b:是否存在且为block device


?5)-c:是否存在且为character device


?6)-S:是否存在且为Socket档案


?7)-p:是否存在且为FIFO(pipe)档案


?8)-L:是否存在且为一个链接档


?test -r filename:关于档案权限的侦测,参数


?1)-r:是否存在且有可读权限


?2)-w:是否存在且有可写权限


?3)-x:是否存在且有可执行权限


?4)-u:是否存在且有SUID权限


?5)-g:是否存在且有SGID权限


?6)-k:是否存在且有Sticky bit权限


?7)-s是否存在且为非空白文档


?test file1 -nt file2:两个档案之间的比较


?1)-nt:file1是否比file2文件新


?2)-ot:file1是否比file2文件旧


?3)-ef:file1与file2是否为同一个档案,可用在判断hard link的判定上,主要意义在判定,两个档案是否均指向同一个inode。


?test n1 -eq n2:两个整数之间的判断


?1)-eq:两数相等


?2)-ne:两数值不等


?3)gt:n1大于n2


?4)lt:n1小于n2


?5)ge:n1大于等于n2


?6)le:n1小于等于n2


?判定字符串数据


?1)test -z string:判定字符串是否为空,空,则为true


?2)test -n string:判定字符串是否非空,非空为true


?3)test str1=str2:判断str1是否等于str2,相等则为true


?4)test str1!=str2:判断str1是否不等于str2,不等则true


?多重条件判定,test -r filename -a -x filename


?1)-a:and,两个同时成立返回true


?2)-o:or,任何一同成立


?3)!:取反,即不成立返回true


3.在脚本当中可以用[]来实现test的功能,不过需要注意,[]中的的内部两端必须有空格,另外:


?1)在中括号内的每个组件都需要空格来分割


?2)在中括号内的变量,最好以双引号括起来


?3)在中括号内的常量最好以单或双引号括起来


?中括号常用于条件判断语句中


4.shell脚本中的一些特殊变量


?1)$#:代表后接的参数的个数


?2)$@:代表"$1 $2 $3 $4"


?3)$*:代表"$1c$2c$3c$4",其中c为分隔符


?4)$n:代表第n个参数


5.shift n:参数变量偏移,即拿掉前面的几个参数,然后对应的参数也做相应的变化。


6.条件判断:


?if[ 条件判断1 ]&&[ 条件判断2 ];then


? 操作指令


?elseif[ 条件判断1 ]||[ 条件判断2 ];then


? 操作指令


?elseif[ 条件判断1 -o 条件判断2 ];then


? 操作指令


?elseif[ 条件判断1 -a 条件判断2 ];then


? 操作指令


?else


? 操作指令


?fi


7.常用端口:


?1)80:www


?2)22:ssh


?3)21:ftp


?4)25:mail


?5)111:RPC(远程过程调用)


?6)631:CUPS(打印服务功能)


8.case语句:


?case $param in


? "选项1")


? ?操作指令


? ?;;


? "选项2")


? ?操作指令


? ?;;


? *)? ? ? ? ? #默认选项


? ?操作指令


? ?;;


?esac


9.函数:function,


?function fname(){


? 程序片段


?}


10.循环:


?1)while do done:当condition成立时,进入循环,直到条件不成立,终止循环


?while [ condition ]


?do


? 程序片段


?done


?2)until do done:当condition条件成立时,就终止循环,否则就持续进行循环


?until [ condition ]


?do


? 程序片段


?done


?3)for...do...done:


?for var in con1 con2 con3...


?do


? 程序片段


?done


?该循环会将con1,con2...依此赋给var,然后执行程序片段


?for((初始值;限制值;执行步阶))


?do


? 程序片段


?done


11.seq n1 n2:生成n1到n2之间的连续数字


12.sh [-nvx] script.sh:执行脚本,参数,


?1)-n:不要执行script,仅查询语法问题


?2)-v:在执行script前,先将script的内容输出到屏幕上


?3)-x:将使用到的script内容显示到屏幕上


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java中如何将输入的信息写入文本中 下一篇Java中对象比较和排序实例

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: