sh_shell的基础语法2

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与运算

exp1

#!/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检查字符串是否为空

code

#!/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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值