特殊变量:

linux中shell变量$#,$@,$,$,$2的含义解释:
变量说明:
$$
Shell本身的PID(ProcessID)
$!
Shell最后运行的后台Process的PID
$?
最后运行的命令的结束代码(返回值)
$-
使用Set命令设定的Flag一览
$*
所有参数列表。如"$*"用「"」括起来的情况、以"$ $ … $n"的形式输出所有参数。
$@
所有参数列表。如"$@"用「"」括起来的情况、以"$" "$" … "$n" 的形式输出所有参数。
$#
添加到Shell的参数个数
$
Shell本身的文件名
$~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

整数比较:

-eq 等于,如:if [ "$a" -eq "$b" ]
-ne 不等于,如:if [ "$a" -ne "$b" ]
-gt 大于,如:if [ "$a" -gt "$b" ]
-ge 大于等于,如:if [ "$a" -ge "$b" ]
-lt 小于,如:if [ "$a" -lt "$b" ]
-le 小于等于,如:if [ "$a" -le "$b" ]
< 小于(需要双括号),如:(("$a" < "$b"))
<= 小于等于(需要双括号),如:(("$a" <= "$b"))
> 大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b"))

if中其他参数:

-e                          文件存在
-a 文件存在(已被弃用)
-f 被测文件是一个regular文件(正常文件,非目录或设备)
-s 文件长度不为0
-d 被测对象是目录
-b 被测对象是块设备
-c 被测对象是字符设备
-p 被测对象是管道
-h 被测文件是符号连接
-L 被测文件是符号连接
-S(大写) 被测文件是一个socket
-t 关联到一个终端设备的文件描述符。用来检测脚本的stdin[-t0]或[-t1]是一个终端
-r 文件具有读权限,针对运行脚本的用户
-w 文件具有写权限,针对运行脚本的用户
-x 文件具有执行权限,针对运行脚本的用户
-u set-user-id(suid)标志到文件,即普通用户可以使用的root权限文件,通过chmod +s file实现
-k 设置粘贴位
-O 运行脚本的用户是文件的所有者
-G 文件的group-id和运行脚本的用户相同
-N 从文件最后被阅读到现在,是否被修改
f1 -nt f2 文件f1是否比f2新
f1 -ot f2 文件f1是否比f2旧
f1 -ef f2 文件f1和f2是否硬连接到同一个文件

字符串比较:

=                         等于           if [ "$a" = "$b" ]
== 与=等价
!= 不等于 if [ "$a" = "$b" ]
< 小于,在ASCII字母中的顺序:
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ] #需要对<进行转义
> 大于
-z 字符串为null,即长度为0
-n 字符串不为null,即长度不为0
#如果没有参数被传递到脚本中, 那么就使用
#当前目录. 否则就是用传递进来的参数作为目录
#来搜索.
[ $# -eq ] && directorys=`pwd` || directorys=$@ #编写函数linkchk用来检查传递进来的目录或文件是否是链接,
#并判断这些文件或目录是否存在. 然后打印它们所指向的文件.
#如果传递进来的元素包含子目录,
#那么把子目录也放到linkcheck函数中处理, 这样就达到了递归的目的.
##########
linkchk () {
for element in $/*; do
[ -h "$element" -a ! -e "$element" ] && echo \"$element\"
[ -d "$element" ] && linkchk $element
# 当然, '-h'用来测试符号链接, '-d'用来测试目录.
done
} #把每个传递到脚本的参数都送到linkchk函数中进行处理,
#检查是否有可用目录. 如果没有, 那么就打印错误消息和
#使用信息.
################
for directory in $directorys; do
if [ -d $directory ]
then linkchk $directory
else
echo "$directory is not a directory"
echo "Usage: $0 dir1 dir2 ..."
fi
done exit 0

最新文章

  1. 一些PHP性能优化汇总
  2. 【笔记】Service的使用
  3. Oracle EM 不能访问
  4. Java连接MySQl数据库实现代码
  5. 12款有助于简化CSS3开发的工具
  6. LeetCode_Reverse Linked List II
  7. javascript第七课js函数
  8. c#循环
  9. lesson - 12 Linux系统日常管理1
  10. DirectShow学习笔记总结
  11. 使用C# (.NET Core) 实现状态设计模式 (State Pattern)
  12. Laravel 5.2数据库--多个关联关系,带条件约束的渴求式加载的问题
  13. Java中构造方法与setter方法
  14. 在hadoop上运行java文件
  15. 2018/04/02 PHP 中的浮点数计算问题
  16. MyIocp 测试截图
  17. roadhog中如何拷贝文件
  18. js权威指南---学习笔记01
  19. spring---transaction(1)---源代码分析(事务的拦截器TransactionInterceptor)
  20. 跨域方法:JSONP、iframe

热门文章

  1. HTML中DOM对象的属性和方法的层级关系是怎样的?(目录即层次)
  2. Windows下启动ActiveMq端口被占用的解决办法
  3. RoundingMode 几个参数详解
  4. MOCHIWEB与COWBOY使用JSON
  5. SQL表的最基本操作练习
  6. 使用ant编译项目技能
  7. hadoop 3.x 完全分布式集群搭建/异常处理/测试
  8. 报错:javax.servlet.jsp.PageContext cannot be resolved to a type;javax.servlet.jsp.JspException cannot be resolved to a type
  9. SQL server添加链接服务器脚本
  10. 广义逆高斯分布(Generalized Inverse Gaussian Distribution)及修正贝塞尔函数