变量的数值计算常见的有如下几个命令
(()) , let , expr , bc , $[]
一:.(())用法:(常用,且效率高,只用于整数直接的运算)
eg:
[root@hadoop /]# echo $(( a+=1 ))9[root@hadoop /]# echo $(( 3>2 ))1[root@hadoop /]# echo $(( 3>8 ))0[root@hadoop /]# echo $(( 100*(100+1)/2 ))5050
二:let用法
eg:[root@hadoop /]# i=2[root@hadoop /]# let i=i+8[root@hadoop /]# echo $i10
三:.expr命令用法
eg:
用法一:[root@hadoop /]# expr 1+91+9(注意计算的时候要有空格)[root@hadoop /]# expr 1 + 23[root@hadoop /]# expr 3 - 12[root@hadoop /]# expr 3 /* 2expr: 语法错误 (要加/给*转译)[root@hadoop /]# expr 3 \* 26[root@hadoop /]# expr 7 / 51
用法二:[root@hadoop /]# expr $[2+3]5[root@hadoop /]# expr $[3/2]1[root@hadoop /]# expr $[2%3]2[root@hadoop /]# expr $[2*3]6
用法三:判断字符串的长度[root@hadoop workspace]# echo $(expr length "123456")6eg:输入一个参数,判断是否是整数#Author:gaoq#Date:2015-06-02#Email:1473418313@qq.comwhile truedoread -p "请输入:" aexpr $a + 0 >/dev/null 2>&1[ $? -eq 0 ] &&echo int||echo charsdone
//====================例题参考资料:
-p 设置提示信息
/dev/null代表 空文件设备
1表示系统标准输出,系统默认值是1, > /dev/null等同于1 > /dev/null
对于 >dev/null 2>&1
1>/dev/null :首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息
2>&1 : 标准错误输出重定向 到 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件
comand > file 2>file 与 comand >file 2>&1
command > file 2>file 的意思是将命令所产生的标准输出信息,和错误的输出信息送到file 中.command > file 2>file 这样的写法,stdout和stderr都直接送到file中, file会被打开两次,这样stdout和stderr会互相覆盖,这样写相当使用了FD1和FD2两个同时去抢占file 的管道
而command >file 2>&1 这条命令就将stdout直接送向file, stderr 继承了FD1管道后,再被送往file,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了stdout和stderr的内容
从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时 候,较多的时候我们会command > file 2>&1 这样的写法
1表示系统标准输出,系统默认值是1, > /dev/null等同于1 > /dev/null
对于 >dev/null 2>&1
1>/dev/null :首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息
2>&1 : 标准错误输出重定向 到 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件
comand > file 2>file 与 comand >file 2>&1
command > file 2>file 的意思是将命令所产生的标准输出信息,和错误的输出信息送到file 中.command > file 2>file 这样的写法,stdout和stderr都直接送到file中, file会被打开两次,这样stdout和stderr会互相覆盖,这样写相当使用了FD1和FD2两个同时去抢占file 的管道
而command >file 2>&1 这条命令就将stdout直接送向file, stderr 继承了FD1管道后,再被送往file,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了stdout和stderr的内容
从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时 候,较多的时候我们会command > file 2>&1 这样的写法
Linux Shell 环境中支持输入输出重定向,用符号<和>来表示。0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输 入或输出,比如 2>a.txt 表示将错误信息输出到文件a.txt中。
同时,还可以在这三个标准输入输出之间实现重定向,比如将 错误信息重定向到标准输出,可以用 2>&1来实现。
Linux下还有一个特殊的文件/dev/null,它就像一个无底 洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。
如 果想要正常输出和错误信息都不显示,则要把标准输出和标准错误都重定向到/dev/null, 例如:
# ls 1>/dev/null 2>/dev/null
还有一种做法是将错误重定向到标准输出,然后再重定向到 /dev/null,例如:
# ls >/dev/null 2>&1
注意:此处的顺序不能更改,否则 达不到想要的效果,此时先将标准输出重定向到 /dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,于 是一切静悄悄:-)
四:dc用法(支持小数处理,支持进制转换)
eg:
[root@hadoop workspace]# echo 1+3|bc4[root@hadoop workspace]# echo 5.23/3.13|bc1[root@hadoop workspace]# echo " scale=2;5.23 "|bc5.23 (注释:scale=2;保留两位小数)[root@hadoop workspace]# echo " scale=2;5.23/3.13 "|bc1.67[root@hadoop workspace]# echo " obase=2;8 "|bc1000 (注释:obase=2;转换为二进制)
五:typeset用法
eg:
[root@hadoop workspace]# typeset -i a=1 b=2[root@hadoop workspace]# a=a+b --------效率高[root@hadoop workspace]# echo $a3
六:$[]用法
eg:
[root@hadoop workspace]# typeset -i a=1 b=2[root@hadoop workspace]# a=a+b[root@hadoop workspace]# echo $a3[root@hadoop workspace]# echo $[3+2]5[root@hadoop workspace]# echo $[a+b]5
相关推荐
Linux+shell编程课程设计——Linux用户管理的shell程序设计
shell编程--用户信息管理
linux超级基础系列——shell变量(本地变量和环境变量 linux超级基础系列——shell变量(本地变量和环境变量
linux shell编程指南linux shell编程指南linux shell编程指南linux shell编程指南linux shell编程指南linux shell编程指南linux shell编程指南linux shell编程指南linux shell编程指南linux shell编程指南linux ...
LinuxShell编程基础教程.pdf
本书由浅入深、循序渐进地详细讲解了LinuxShell编程的基本知识。这些基本知识包括Shell编程的基本知识、文本处理的工具和方法、正则表达式、Linux系统知识等。 本书旨在通过理清Linux Shell编程的脉络,从基本概念...
第1章 Shell脚本编程概述 1 第2章 Linux文件系统和文本编辑器 12 第3章 正则表达式 43 第4章 sed命令和awk编程 64 第5章 文件的排序、合并和分割 105 第6章 变量和引用 133 第7章 退出、测试、判断及操作符 ...
Linux Shell编程基础 1.调用shell 2.注释 3.执行shell脚本 4.接收用户输入并赋值给变量 5.Bash中的变量 1. 环境变量 1.1HOME 2.2LANG 3.3SHELL 4.4PATH 5.5PS1 6.6PS2 7.7只读环境变量 8.8永久修改环境变量 2. 位置...
学习Linux下Shell编程的好资料 好好利用 完全免费
linux 命令行、linux shell 编程知识!
LinuxShell编程基础.pdf
linux shell 编程 linux shell 编程
linux Shell编程入门 实例讲解详解
实战Linux Shell编程与服务器管理 自己做的书签
Linux Shell编程基础 linux编程 shell编程 linux基础编程
linux shell 编程实例开发 书的影印版
linux shell编程手册,供初学都等学习使用!!!
linux Shell 编程视频,适合初学者
linux shell编程从初学到精通源码4-17全