3.shell的数学运算、文件描述符和重定向

  • 基本的算术操作可用let、(())、[ ]进行
  • 高级操作常用expr、bc


      let
1.使用let时,变量名之前不要$
     no1 = 3   no2 = 4   , let  result=no1+no2   echo  $result
2.let的自增、自减形式
     let  no1++ 、 let no1--

     [ ]
1.[ ] 中也可以使用$前缀
    result=$[ $no1 + 3 ]

    (( ))
1. 使用 (())时,变量名之前需要加上$
    result=$(( no1 + 4 ))

    expr
1.expr同样可以进行基本运算操作
   result=`expr 4 + 5`     、  result=$(expr $no1 +7 )
以上只能用于整数的运算,而不支持浮点数

    bc
1.可以借助它执行浮点数并应用一些高级函数
     echo “ 4 * 0.34”  | bc     、   no = 20  result=`echo  "$no * 1.5"  |  bc `    echo $result

技巧1   设定小数精度
参数scale = num   ----->  echo  “scale=2;3/8”  | bc    -----0.37

技巧2   进制转换  (十进制转二进制,再回转)  obase= num && ibase= num
num = 100                                                   num = 1100100
echo  “obase= 2;$num”  | bc                        echo  "obase=10;ibase=2;$num"  | bc

 技巧3    平方以及平方根计算
echo  “sqrt(100)”   |  bc  #Square root
echo   "10^10"  |  bc  #Square
 


  • 常见的文件描述符是stdin(标准输入)、stdout(标准输出)、stderr(标准错误)
  • 文件描述符0、1、2是系统预留。0----stdin,1---stdout,2---stderr

        tee
1.可以在终端打印输出,并将内容同时重定向到一个文件中
     command  |  tee   file
2.tee只能从stdin中读取,即重定向入文件内并没有stderr的错误信息
3.默认情况下,tee会将文件覆盖(-a 选项可以用来追加)
     command  | tee  -a  file

技巧1   对脚本内部文本块重定向
例:向log文件中写入头部信息
#!/bin/bash                           cat<<EOF>log.txt和EOF之间的内容,被当作stdin输入文件
cat<<EOF>log.txt
It is  a log file
EOF

技巧2   自定义文件描述符   (exec命令创建自己的文件描述符)
echo   He is a  joker  > joker.txt       如果再次读取,需要exec重新分配文件描述符
exec  4< joker.txt
cat <&4 ------He is a  joker
 

发布了32 篇原创文章 · 获赞 0 · 访问量 668
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览