sh_shell的基础语法2
2015-11-25 18:47
501 查看
sh_shell的基础语法2
shell脚本转义字符的替换
shell解释器默认是不会对转义字符的进行自动替换的需要加入-e 才会进行替换的
#!/bin/sh a=10 echo "this is $a\n" #不转义 echo -e "this is $a\n" #进行自动转义
result:
this is 10\n this is 10
转义字符表
转义字符 | 转义含义 |
---|---|
\ | 反斜杠 |
\a | 警报 |
\b | 退格 |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
shell的运算符
原生的Bash是不支持的简单的数学运算符的,但是它是支持算数,关系,布尔,字符串,文件测试运算符数学运算符是通过expr的命令完成的
算数运算符
#!/bin/sh a=1 b=2 test=`expr $a + $b` echo "a+b:$test" test=`expr $a - $b` echo "a-b:$test" test=`expr $a \* $b` #乘法符号需要转义 echo "a*b:$test" test=`expr $a / $b` echo "a/b:$test" test=`expr $a % $b` echo "a%b:$test"
result:
a+b:3 a-b:-1 a*b:2 a/b:0 a%b:1
关系运算符
关系运算符只支持数字#!/bin/sh a=10 b=20 if [ $a -eq $b ] #检查两个数是否相等,相等back true then echo "a -ep b:true" else echo "a -eq b:false" fi if [ $a -ne $b ] #检查两个数是否相等,不相等back true then echo "a -ne b:true" else echo "a -ne b:false" fi if [ $a -gt $b ] #检测左边的数是否大于右边 大于 back true then echo "a -gt b:true" else echo "a -gt b:false" fi if [ $a -lt $b ] #检测左边的数是否小于右边 小于 back true then echo "a -lt b:true" else echo "a -lt b:false" fi if [ $a -ge $b ] #检测左边的数是否大于等于右边 大于等于 back true then echo "a -ge b:true" else echo "a -ge b:false" fi if [ $a -le $b ] #检测左边的数是否小于等于右边 小于等于 back true then echo "a -le b:true" else echo "a -le b:false" fi
result:
a -eq b:false a -ne b:true a -gt b:false a -lt b:true a -ge b:false a -le b:true
布尔运算符
布尔运算是数字符号化的逻辑推演法,其运算符就是实现的中间媒介运算符 | 说明 |
---|---|
! | 非运算 |
-o | 或运算 |
-a | 与运算 |
#!/bin/sh a=100 b=200 if [ $a -lt 80 -a $b -gt 400 ] #与运算 then echo "true" else echo "false" fi if [ $a -gt 80 -o $b -gt 400 ] #或运算 then echo "true" else echo "false" fi
result:
false true
字符串运算符
运算符 | 说明 |
---|---|
= | 检测两个字符串是否相等,相等返回 true |
!= | 检测两个字符串是否相等,不相等返回 true |
-z | 检查字符串长度是否为0 |
str | 检查字符串是否为空 |
#!/bin/sh $str1="abc" $str2="abc" if [ $str1 = $str2 ] #判断字符串是否相等 then echo "str1等于str2" else echo "str1等于str2" fi if [ -z $str1 ] #判断字符串长度是否为0 then echo "the lengrh of str1 is not 0" else echo "the lengrh of str1 is 0" fi if [ $str1 ] #判断字符串是否为bull then echo "the str1 is not null" else echo "the str1 is null" fi
result
str1等于str2 the lengrh of str1 is not 0 the str1 is null
文件操作符
sh的文件操作符是对Linux的文件进行相关的操作文件测试运算符列表
运算符 | 说明 |
---|---|
[ -b $file ] | 检测文件是否是块设备文件,如果是,则返回 true |
[ -c $file ] | 检测文件是否是字符设备文件,如果是,则返回 true |
[ -d $file ] | 检测文件是否是目录,如果是,则返回 true |
[ -f $file ] | 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true |
[ -g $file ] | 检测文件是否设置了 SGID 位,如果是,则返回 true |
[ -k $file ] | 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true |
[ -p $file ] | 检测文件是否是具名管道,如果是,则返回 true |
[ -u $file ] | 检测文件是否设置了 SUID 位,如果是,则返回 true |
[ -r $file ] | 检测文件是否可读,如果是,则返回 true |
[ -w $file ] | 检测文件是否可写,如果是,则返回 true |
[ -x $file ] | 检测文件是否可执行,如果是,则返回 true |
[ -s $file ] | 检测文件是否为空(文件大小是否大于0),不为空返回 true |
[ -e $file ] | 检测文件(包括目录)是否存在,如果是,则返回 true |
exp
#!/bin/sh file="testfile" if [ -s $file ] # 判断文件是否存在 then echo "File exists" else echo "File doesn't exist" fi
result:
File doesn't exist
相关文章推荐
- android wifi 无线调试
- 运维入门
- 动态清空 nohup 输出文件
- install scrapy with pip and easy_install
- Linux Shell常用技巧
- Shell 脚本编程陷阱
- VBS脚本写的Windows硬件检测工具分享
- 用vbscript实现隐藏任务栏图标的脚本
- 用autoit编写第一个脚本(Hello World)
- VBS调用WMI快速关闭IE的脚本
- 收集的ROS防火墙脚本
- JSP脚本漏洞面面观
- shell字符串操作详解
- 不错的批处理脚本 第一部分
- VBS脚本加密/解密VBS脚本(简易免杀版1.1)
- 不错的批处理脚本实例代码 第二部分
- 使用脚本和批处理清除电脑中的痕迹的代码第1/2页
- 让你的脚本说话