shell脚本编程之运算
2016-01-13 14:38
513 查看
一、数学运算 1、expr命令 此命令可以在命令行执行数学运算操作。
由于此命令使用时过于麻烦,所以不推荐使用。 2、方括号和双圆括号 $[ EXPRESSION ] $(( EXPRESSION )) 在之前的实例中已经出现过方括号的表达式:$[$a+$b]。 3、let命令
4、算术运算符 x+=y:相当于x=x+y x-=y:相当于x=x-y x*=y:相当于x=x*y x/=y:相当于x=x/y x++: 相当于x=x+1 x--: 相当于x=x-1二、字符串连接 变量引用后方直接跟字串时,变量名要加{}。
三、条件测试 条件测试的表达式可以使用以下三种格式: [ expression ]:注意中括号与表达式之间有空格; ` expression `:注意中括号与表达之间有空格; test expression:上面的两种格式其实都是test命令的其它格式。 test命令可以进行3种类型的条件判断:整数测试、字符串测试、文件测试。 1、整数测试 -eq:测试两个整数是否相等; -ne:测试两个整数是否不等,不等为真,相等为假; -gt:测试一个数是否大于一个数,大于为真,否则为假; -lt:测试一个数是否小于一个数,小于为真,否则为假; -ge:测试一个数是否大于一个数,大于等于为真,否则为假; -le:测试一个数是否大于一个数,小于等于为真,否则为假; 实例:如果两个参数相等则显示"equal",否则显示"different"。
2、字符测试 ==:测试是否相等,等为真,不等为假; !=:测试是否不等,不等为真,等为假; =~:模式配置; -z string:测试指定字符串是否为空,空为真不空为假 -n string:测试指定字符串是否为空,空则假不空为真 -s string:测试指定字符串是否不空,不空为真,空则为假 实例:
上面是一个使用"-z"的例子,如果改为-n的话则如下图所示:
注:变量比较时最好加上引号(单双都可以),否则如果变量为空的话,会报错。 3、文件测试
-a FILE:测试FILE存在为真,否则为假; -e FILE:测试FILE是否存在,存在为真,否则为假; -l/-L FILE:软链接文件; -b:块设备; -c:字符设备; -S:套接字文件; -p:命名管道; -s:非空文件为真; -f FILE:测试FILE是否为普通文件; -d FILE:测试指定路径是否为目录; -r FILE:测试文件对当前用户是否可读; -w FILE:测试文件对当前用户是否可写; -x FILE:测试文件对当前用户是否可执行; -N FILE:修改文件时间比访问时间新则为真; 内容重定向到文件中,但文件还没有被打开过的情况 file1 -nt file2:file1比file2新则为真; file1 -ot file2:file1比file2旧则为真。 实例:如果/test存在则将其重命名为/new-test,否则创建这个目录:
实例:给定一个参数,首先判断此参数是否存在,如果存在判断是否为文件,若为文件确保其有执行权限:
验证:
4、组合测试条件 在多个条件间实现逻辑运算 -a:与关系 [ condition1 -a condition2 ] -o:或关系 [ condition1 -o condition2 ] !:非关系 [ ! condition ] 或 [ -not condition ]
四、命令间的逻辑关系 &&:逻辑与,只有当左边的条件为真时才会执行右边的语句; ||:逻辑或,当左边的条件为假时才会执行右边的语句。 上面的实例也可以使用逻辑与来完成:
由于此命令使用时过于麻烦,所以不推荐使用。 2、方括号和双圆括号 $[ EXPRESSION ] $(( EXPRESSION )) 在之前的实例中已经出现过方括号的表达式:$[$a+$b]。 3、let命令
4、算术运算符 x+=y:相当于x=x+y x-=y:相当于x=x-y x*=y:相当于x=x*y x/=y:相当于x=x/y x++: 相当于x=x+1 x--: 相当于x=x-1二、字符串连接 变量引用后方直接跟字串时,变量名要加{}。
三、条件测试 条件测试的表达式可以使用以下三种格式: [ expression ]:注意中括号与表达式之间有空格; ` expression `:注意中括号与表达之间有空格; test expression:上面的两种格式其实都是test命令的其它格式。 test命令可以进行3种类型的条件判断:整数测试、字符串测试、文件测试。 1、整数测试 -eq:测试两个整数是否相等; -ne:测试两个整数是否不等,不等为真,相等为假; -gt:测试一个数是否大于一个数,大于为真,否则为假; -lt:测试一个数是否小于一个数,小于为真,否则为假; -ge:测试一个数是否大于一个数,大于等于为真,否则为假; -le:测试一个数是否大于一个数,小于等于为真,否则为假; 实例:如果两个参数相等则显示"equal",否则显示"different"。
2、字符测试 ==:测试是否相等,等为真,不等为假; !=:测试是否不等,不等为真,等为假; =~:模式配置; -z string:测试指定字符串是否为空,空为真不空为假 -n string:测试指定字符串是否为空,空则假不空为真 -s string:测试指定字符串是否不空,不空为真,空则为假 实例:
上面是一个使用"-z"的例子,如果改为-n的话则如下图所示:
注:变量比较时最好加上引号(单双都可以),否则如果变量为空的话,会报错。 3、文件测试
-a FILE:测试FILE存在为真,否则为假; -e FILE:测试FILE是否存在,存在为真,否则为假; -l/-L FILE:软链接文件; -b:块设备; -c:字符设备; -S:套接字文件; -p:命名管道; -s:非空文件为真; -f FILE:测试FILE是否为普通文件; -d FILE:测试指定路径是否为目录; -r FILE:测试文件对当前用户是否可读; -w FILE:测试文件对当前用户是否可写; -x FILE:测试文件对当前用户是否可执行; -N FILE:修改文件时间比访问时间新则为真; 内容重定向到文件中,但文件还没有被打开过的情况 file1 -nt file2:file1比file2新则为真; file1 -ot file2:file1比file2旧则为真。 实例:如果/test存在则将其重命名为/new-test,否则创建这个目录:
实例:给定一个参数,首先判断此参数是否存在,如果存在判断是否为文件,若为文件确保其有执行权限:
验证:
4、组合测试条件 在多个条件间实现逻辑运算 -a:与关系 [ condition1 -a condition2 ] -o:或关系 [ condition1 -o condition2 ] !:非关系 [ ! condition ] 或 [ -not condition ]
四、命令间的逻辑关系 &&:逻辑与,只有当左边的条件为真时才会执行右边的语句; ||:逻辑或,当左边的条件为假时才会执行右边的语句。 上面的实例也可以使用逻辑与来完成:
相关文章推荐
- Lua中关系运算符的使用教程
- Lua学习笔记之运算符和表达式
- 什么是Shell?Shell脚本基础知识详细介绍
- C#运算符重载用法实例分析
- sql server 2008中的apply运算符使用方法
- C#中38个常用运算符的优先级的划分和理解
- 学习shell脚本之前的基础知识[图文]
- 详解C++中的成员访问运算符和指针到成员运算符
- C++中的按位与&、按位与或|、按位异或^运算符详解
- 深入解析C++编程中__alignof 与__uuidof运算符的使用
- C#基础语法:as 运算符使用实例
- 一波实用的Bash Shell整理
- 与MSSQL对比学习MYSQL的心得(五)--运算符
- MySQL中的运算符使用实例展示
- 轻松学习C#的运算符
- Ruby的运算符和语句优先级介绍
- C#编程自学之运算符和表达式
- Lua中的运算符简明总结
- javascript 全等号运算符使用说明
- JS按位非(~)运算符与~~运算符的理解分析