shell里if-then的使用
来源:互联网 发布:qq三国js心法 编辑:程序博客网 时间:2024/06/05 16:19
命令格式if command then commands fi或者if command ; then commands fi 注意command后面有个分号(;)
shell里面会运行if后面的command命令。如果运行之后,该命令退出状态为0,则只需then后面的commands命令。这点和其他编程语言不一样。其他编程语言是,如果if后面的条件为TRUE或者false来判断。
if-then 不能测试命令退出状态码以外的条件。但在bash中有个好工具可以通过test命令来测试其他条件
test command如果后面的condition满足的话,test命令退出并返回状态码0。如果条件不成立,则退出并返回非0的状态码。
除此之外,可以直接用方括号( [ ] )来替代test命令
if [ condition ]需要注意的是 ,方括号与condtion前后都必须留有空格,否则会报错
条件比较类型分为三类;
1)数值比较。
-eq ,-ge,-gt,-le,-lt,-ne
2)字符串比较
str1 = str2 检查str1是否和str2相同
str1 != str2 检查str1是否和str2不等
str1 < str2 检查str2是否比str1小
str1 > str2 检查str1是否比str2大
-n str1 检查str1的长度是否非0
-z str1 检查str1的长度是否为0
注意:字符串大于和小于比较需要转义 ,if [ $val1 > $val2 ]是错误的,必须用 [ $val1 \> $val2]
3)文件比较
-d file 检查file是否存在并是一个目录
-e file 检查file是否存在
-f file 检查file是否存在并是一个文件
-r file 检查file是否存在并可读
-s file 检查file是否存在并非空
-w file 检查file是否存在并可写
-x file 检查file是否存在并可执行
-O file 检查file是否存在并属当前用户所有
-G file 检查file是否存在并且默认组与当前用户相同
file1 -nt file2 检查file1是否比file2新
file1 -ot file2 检查file1是否比file2旧
if-then高级特性:
1)用于数学表达式的双括号(())
((expression))双括号命令允许在比较过程中使用高级数学表达式。test比较命令只能使用简单的算数操作,而双括号可以使用更多的数学符号。
如:++,--,!(取反),~(位取反),**(幂运算),<<,>>,&,|,&&,||
2)用于高级字符串处理功能的双方括号[[]]
[[expression]]双方括号提供了针对字符串比较的高级特性。有一个模式匹配功能。
例如:
if [[ $USER == r*]] then echo "Hello $USER" else echo "Sorry,I don't know you" fi这个例子里,判断当前用户是否是以r开头。
- shell里if-then的使用
- shell script 学习(四)条件判断式的使用:if..then ..fi和 case...esac语句
- shell脚本:使用if-then语句和test命令
- shell编程if/then备忘
- shell中的if-then语句
- plsql if then 使用
- shell if的使用
- Linux-Shell脚本编程-学习-5-Shell编程-使用结构化命令-if-then-else-elif
- shell 脚本 if then else fi
- shell编程:理解if-test-then-fi
- Linux#Shell#if [ $# -ne 1 ];then 是什么意思?
- Shell脚本基础5-if-then语句
- shell里的if语句详解
- shell脚本里的if语句学习
- 一天一条shell知识------shell的结构之判断语句if-then
- shell 中if的使用
- shell 中if的使用
- 刚开始学习shell的条件判断if [] ;then 时的小小体会
- JavaScript中的Array类型
- 面试:对封装、继承、多态的理解。
- Atom常用插件的手动安装
- shell字符串的截取
- pojFilp Game2965 翻转棋子
- shell里if-then的使用
- 阅读TF_IDF代码
- 【STL】hdu 4585 Shaolin
- 【模板】【SPOJ375】树链剖分
- Android事件分发理解
- 【caffe】windows下caffe+vs2013+python2.7+cuda8.0+cmake3.8编译与配置
- Ubuntu 改变用户名和主机名
- 我需要学习的东西
- 注册时:js的ajax实现局部刷新验证用户名