- 基本的算术操作可用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