linuxSHELL学习之反引号、expr、bc

一、反引号
反引号允许将shell命令的输出赋值给变量。
[root@t1 ~]# testing=`date`
[root@t1 ~]# echo $testing
2012年 07月 03日 星期二 20:09:06 CST
[root@t1 ~]# testing=`date +%y%m%d`  ---使用两位数字来显示年、月、日
[root@t1 ~]# echo $testing
120703
[root@t1 ~]# cat t53.sh     ---应用日期做log文件名的实例
#!/bin/bash
today=`date +%y%m%d`
ls -l /root |grep .sh >log.$today
[root@t1 ~]# ./t53.sh
[root@t1 ~]# cat log.120703
-rwxr--r-- 1 root   root    159 07-02 18:29 t13.sh
-rwxr--r-- 1 root   root    155 07-02 18:44 t14.sh
-rwxr--r-- 1 root   root    155 07-02 18:45 t15.sh
-rwxr--r-- 1 root   root    184 07-02 18:55 t16.sh
-rwxr--r-- 1 root   root    139 07-02 19:00 t17.sh
-rwxr--r-- 1 root   root    123 07-02 19:05 t18.sh
-rwxr--r-- 1 root   root    247 07-02 19:28 t19.sh
二、expr命令
expr允许处理命令行中的等式
[root@t1 ~]# expr 3+4  ---没有空格不会进行计算
3+4
[root@t1 ~]# expr 3 + 4 ---带空格得到想要的结果
7
[root@t1 ~]# expr 8 * 6  ---对“*”要进行转义
expr: 语法错误
[root@t1 ~]# expr 8 \* 6  ---转义后得到想要的结果
48
也可以使用括号来实现数学计算
[root@t1 ~]# var1=$[ 4 + 8 ]
[root@t1 ~]# echo $var1
12
[root@t1 ~]# var2=$[ 7 * 8 ] ---不用转义“*”,因为在括号内,shell不会把它解释为通配符
[root@t1 ~]# echo $var2
56
[root@t1 ~]# cat t54.sh   ---这是bash shell的一个缺陷,它只支持整数算法。**Z shell支持浮点算数运算
#!/bin/bash
var1=100
var2=45
var3=$[ $var1 / $var2 ]
echo the final result is:$var3

[root@t1 ~]# ./t54.sh
the final result is:2  ---结果为整数
三、浮点解决方案
linux有一个内置的bash计算器(称为bc)。
[root@t1 ~]# bc -q  ---进入bc计算器
12*5.4
64.8
3.125*(3+5)
25.000
quit  ---推出计算器
[root@t1 ~]# bc -q
6.7/8
0
scale=5  ---scale默认值是0,它代表保留小数点后的位数
6.7/8
.83750
[root@t1 ~]# bc -q   ---bc也识别变量
var1=10
var1*4
40
var2=var1/5
print var2     ---使用print输出变量
2
quit
***在脚本中使用bc
variable=`echo "options; expression" | bc`
第一部分options允许设置变量,如果需要设置多个变量,使用分号将他们隔开。expression参数定义了使用bc计算的数学表达式。
[root@t1 ~]# var1=`echo " scale=6; var2=6; $var2/2.2" | bc`
[root@t1 ~]# echo $var1
25.454545
***bc支持内置输入重定向方法
variable=`bc << EOF
options
statements
expressions
EOF
`
EOF文本字符串表明内置重定向数据的开始和末尾,记住仍然需要反引号字符把bc命令的输出结果赋值给变量。
[root@t1 ~]# var1=`bc << EOF
> scale=4
> a1=45.6*3
> a2=a1+55
> a2 * 2
> EOF
> `
[root@t1 ~]# echo $var1
383.6


 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23655288/viewspace-734518/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23655288/viewspace-734518/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值