正式学习shell编程近1周,趁着明天休息,这会也懒得写作业...做一下基础知识总结..给各位也给自己做个笔记..废话结束,下面切入正题:
测试运算符
-z 字符串长度为空 -n 字符串长度不为空 上面这俩,当条件满足时,取值为真,呃,个人偏爱-z,以至于当需要判断不为空时,仍用 ! -z .....您当我犯贱吧... 整数测试 intl -eq int2 int1等于int2 ntl -ne int2 int1不等于int2 ntl -gt int2 int1大于int2 ntl -ge int2 int1大于或等于int2 ntl -lt int2 int1小于int2 ntl -le int2 int1小于或等于int2我会告诉大家,我写这些出来,是因为我压根就记不住吗
逻辑测试 expr1 -a expr2 逻辑与 && expr1 -o expr2 逻辑或 || 这个传说中的逻辑与和逻辑或..这是坑.... 文件测试 -b filename 该文件是块特殊文件 -c filename 该文件是字符特殊文件 -d filename 该目录是否存在 -f filename 该普通文件存在且不是目录 -g filename 设置了set-group-ID位 -k filename sticky位被设置 -p filename 该文件是命名管道 -r filename 读 -s filename 大小不为0 -u filename 设置了set-user-ID位 -w filename 该文件可写 -x filename 该文件可执行 -L 或者 -H filename 链接文件 快捷方式 记得上次整理笔记的时候,把 -L给忘写了...以至于上次作业,老师的意思估计是让用判断语句判断文件,目录和链接...当时我以为没有判断链接文件测试条件....后来...我用find.... 特殊变量 $0 脚本自身的名字 $? 前一命令的退出状态 $$ shell进程的进程编号 $! 最近一个后台命令的进程编号。以此方式存储进程编号 $@ 输出所有传递的参数值:区别&下:加双引号时,所有的参数均为独立值 $* 输出所有传递的参数值:区别&上:加双引号时,所有参数变为一个值 $# 传递的位置参数总个数 $HOEM 当前用户家目录 $PS1 主要命令提示符字符串 $LANG 当前编码环境 $PPID 父进程编号 $PWD 当前的工作目录 其中$@和$*区别,例: [root@bogon shellscripts]# set 'apple pie' pears peaches [root@bogon shellscripts]# for i in "$*"; do echo $i; done apple pie pears peaches $*加引号时,注意结果 [root@bogon shellscripts]# for i in "$@"; do echo $i; done apple pie $@加引号时,注意结果 pears peaches替换运算符
${varname:-word} 定义默认值,$varname变量名 ${varname:+word} 如果变量存在,则显示word值,否则返回空,用于测试变量是否存在和约束输入 ${varname:?message} 如果变量为空,则显示message信息,主要用于排错 我只能说,这个很重要...你懂的...