shell编程(续)

shell编程参考:http://www.cnblogs.com/dongying/p/6262935.html

以及  https://www.cnblogs.com/clsn/p/8028337.html#auto_id_0

注:凡是不会的命令都用man 去查:例如 man test、 man echo、

基本数据类型运算:shell中主要是整数运算和浮点书(小数)运算,

整数运算两种方式:expr命令和 $[] 实现

num1=$(expr 10 % 3)  #将计算结果赋值给变量  
num2=`expr 10 % 3` #将计算结果赋值给变量
expr 10 + 3 #输出13 
expr 10+3 #输出10+3  运算符前后必须有空格,否则就被当成字符串
#!/bin/bash
num1=10
num2=3
echo "num1 + num2=$[$num1 + $num2]"  #输出num1 + num2=13
echo "num1+num2=$[$num1+$num2]"#输出num1+num2=13

浮点型数据的运算方式;

variable = $(echo "options;expression" | bc) 
$()将结果保存到变量中, 而$[]是使得整数运算可以按照正常的运算符号来计算,而不必在乘号前加转义字符,或运算符前后加空格了
| 管道命令水管一头接入前一个命令的返回结果, 一头接入下一个命令。表示将前一个命令的执行结果作为后一个命令的参数输入。以上,表示将表达式作为bc的参数输入。
第二部分:

 if  else结构:

if command     #如果if后面的command正常执行,即返回的状态码为0 时候,则执行then 语句,否则不执行,直接执行fi 即if语句结束
then 
     commands
elif
      commands
fi  

test命令只能判断一下三类条件:

  • 数值比较
  • 字符串比较
  • 文件比较

也可以将 if 后面的command 换成test命令 

注:test命令和测试表达式使用标准的数学比较符号来表示字符串比较,而用文本代码来表 示数值比较。这与其它语言相比都不一样。

num1 = 100
num2 = 100
if test $num1 -eq $num2
then
    echo num1等于num2
else
    echo num2不等于num1
fi
也可以用双括号替代上面的test命令,这样就可以将文本表示替换成数学符号
if (( num1=num2 ))   #括号中的两边都需要有空格
then
    echo num1 等于num2
else
    echo num2不等于 num1

使用双方括号

双方括号命令提供了针对字符串比较的高级特性。它不仅解决了使用test所带来的一系列毛病,还提供了一些test命令所没有的高级用法。双方括号命令的格式如下:

[[ expression ]]  

test命令只能判断一下三类条件:

  • 数值比较
  • 字符串比较
  • 文件比较
#!/bin/bash
例如:
num = 3
if(( $num == 1 ))
then
    echo "num=1"
elif(( $num == 2 ))
then
    echo "num=2"
elif(( $num == 3 ))
then
    echo "num=3"
fi
此时,其实还有一种替代方案,那就是使用case.

case variable in
pattern1 | pattern2) commands1;; pattern3) commands2;;
*) default commands;;
esac
例如:
case $num in
1)
    echo "num=1";;
2)
    echo "num=1";;
3)
    echo "num=3";;
4)
    echo "num=4";;
*)
    echo "defaul";;
esac
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值