shell中的调试与计算

2、正确方法
   1)使用let
   var=1
   let "var+=1"
   echo $var
   输出结果为2,这次没有悲剧
   注意:
   a)经我测试let几乎支持所有的运算符,在网上看到一篇文章说“let不支持++、--和逗号、(、)”,但经我测试自加、自减、以及括号的优先级都得到了很好的支持
   b)方幂运算应使用“**”
   c)参数在表达式中直接访问,不必加$
   d)一般情况下算数表达式可以不加双引号,但是若表达式中有bash中的关键字则需加上
   e)let后的表达式只能进行整数运算

2)使用(())
   var=1
   ((var+=1))
   echo $var
   输出结果为2
   注意:
   (())的使用方法与let完全相同
   
   3)使用$[]
   var=1
   var=$[$var+1]
   echo $var
   输出结果位2
   注意:
   a)$[]将中括号内的表达式作为数学运算先计算结果再输出
   b)对$[]中的变量进行访问时前面需要加$
   c)$[]支持的运算符与let相同,但也只支持整数运算
   
   4)使用expr
   var=1
   var=`expr $var + 1`
   echo $var
   输出结果为2
   注意:
   a)expr后的表达式个符号间需用空格隔开
   b)expr支持的操作符有: |、&、<、<=、=、!=、>=、>、+、-、*、/、%
   c)expr支持的操作符中所在使用时需用\进行转义的有:|、&、<、<=、>=、>、*
   e)expr同样只支持整数运算
   
   5)使用bc(可以进行浮点数计算)
   var=1
   var=`echo "$var+1"|bc`
   echo $var
   输出结果为2
   介绍:
   bc是linux下的一个简单计算器,支持浮点数计算,在命令行下输入bc即进入计算器程序,而我们想在程序中直接进行浮点数计算时,利用一个简单的管道即可解决问题。
   注意:
   1)经我测试bc支持除位操作运算符之外的所有运算符。
   2)bc中要使用scale进行精度设置
   3)浮点数计算实例
   var=3.14
   var=`echo "scale=2;$var*3"|bc`
   echo $var
   输出结果为9.42
   
   6)使用awk(可已进行浮点数计算)
   var=1
   var=`echo "$var 1"|awk ‘{printf("%g",$1*$2)}‘`
   echo $var
   输出结果为2
   介绍:
   awk是一种文本处理工具,同时也是一种程序设计语言,作为一种程序设计语言,awk支持多种运算,而我们可以利用awk来进行浮点数计算,和上面bc一样,通过一个简单的管道,我们便可在程序中直接调用awk进行浮点数计算。
   注意:
   1)awk支持除微操作运算符之外的所有运算符
   2)awk内置有log、sqr、cos、sin等等函数
   3)浮点数计算实例
   var=3.14
   var=`echo "$var 2"|awk ‘{printf("%g",sin($1/$2))}‘`
   echo $var
   输出结果为1

调试

1.第一行加 -xv

#!/bin/bash –xv

2.

 bash -x  shellName

3.如果只想调试其中几行脚本的话可以用 set -x 和 set +x 把要调试的部分包含进来:

比如:

#!/bin/bash
echo "Hostname: $(hostname)"
set -x
echo "Date: $(date)"
set +x
echo "Kernel: $(uname -mrs)"

原文地址:https://www.cnblogs.com/klb561/p/9162669.html

时间: 2024-10-15 02:21:12

shell中的调试与计算的相关文章

shell中数学表达式的计算示例一

数学表达式的计算示例: [email protected]:/mnt/mtd# cat rss.sh #!/bin/sh while true do cat /proc/2409/stat |awk -F" " '{print $24}' rss=`cat /proc/2409/stat |awk -F" " '{print $24}'` page=4096 echo rss=$[$page * $rss / 1024 / 1024] sleep 1 done

Shell中数学计算/运算

shell中的赋值和操作默认都是字符串处理. 1)使用let(只能进行整数运算)var=1let "var+=1"echo $var输出结果为2 注意:a)let几乎支持所有的运算符b)方幂运算应使用“**”c)参数在表达式中直接访问,不必加$d)一般情况下算数表达式可以不加双引号,但是若表达式中有bash中的关键字则需加上e)let后的表达式只能进行整数运算 2)使用(())var=1((var+=1))echo $var输出结果为2注意:(())的使用方法与let完全相同 3)使用

shell中的计算

shell中变量的数值计算常见的命令 (()).let.expr.bc.$[] 一.(()) 示例:     [[email protected] ~]# echo $((1+2))     3 二.let 示例:     [[email protected] ~]# let a=1+2     [[email protected] ~]# echo $a     3 三.expr 示例: 1.     [[email protected] ~]# expr 1+2     1+2     [[

shell 中数学计算总结

1.错误方法举例 a) var=1+1 echo $var 输出的结果是1+1,悲剧,呵呵 b) var=1 var=$var+1 echo $var 输出结果是1+1,依然悲剧,呵呵 2.正确方法 1)使用let var=1 let "var+=1" echo $var 输出结果为2,这次没有悲剧 注意: a)经我测试let几乎支持所有的运算符,在网上看到一篇文章说"let不支持++.--和逗号.(.)",但经我测试自加.自减.以及括号的优先级都得到了很好的支持

Bourne Shell中的条件判断

条件判断是一个程序获得智能的基础,而Bourne Shell脚本则通过命令 [ 来模拟大多数编程语言中的条件表达式. shell中支持的控制结构有: (1) if then else fi (2) for in do done (3) while do done 第二种主要用于遍历,可能不需要条件判断,其它两种则免不了和 [ 命令共同使用了.下面讲解这个命令如何模拟条件表达式. 文件/目录判断[ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真.[ -c FILE ] 如果 FI

shell中的变量及shell条件判断

Shell 基础之变量和条件判断 一.shell概述 1.shell概述: shell是一个命令行的解释器,为用户提供了一个向Linux内核发送请求以便运行程序的界面系统及程序,用户可以用shell来启动.挂起.停止甚至编写一些程序,shell还是一个功能强大的编程语言,shell是解释性的脚本语言,在shell中可以直接调用Linux命令. 2.shell脚本的用途 (1)自动化常用的命令 (2)执行系统管理和故障排除 (3)执行简单的应用程序 (4)处理文本或文件 3.shell的分类 (1

shell 中的常用技巧

本文收集了一堆的shell脚本技巧,主要方便自己查阅,技巧出自脚本之家中的博客,自己也增加了实现目的的其他方法,方便以后自己查阅: 0. shell 调试 代码如下: sh -x somefile.sh 在somefile.sh 文件里加上set+x set-x1. 用 && || 简化if else 代码如下: gzip -t a.tar.gz if [[ 0 == $? ]]; then     echo "good zip" else     echo "

VxWorks操作系统shell命令与调试方法总结

VxWorks下的调试手段 主要介绍在Tornado集成开发环境下的调试方法,和利用支撑定位问题的步骤.思路. 1         Tornado的调试工具 嵌入式实时操作系统VxWorks和集成开发环境Tornado的组成结构如下图1.分为主机和目标机系统. 图1 集成开发环境结构图 在Tornado下,调试相关操作在Debug菜单下,包括: 图2 Debug菜单 简单解释各菜单项的功能 1.1        WindShell 1.1.1         简介 Vxworks的Shell分为

在 shell 中使用 vi 模式

作为一名大型开源社区的参与者,更确切地说,作为 Fedora 项目的成员,我有机会与许多人会面并讨论各种有趣的技术主题. 我最喜欢的主题是"命令行"或者说 shell,因为了解人们如何熟练使用 shell 可以让你深入地了解他们的想法,他们喜欢什么样的工作流程,以及某种程度上是什么激发了他们的灵感. 许多开发和运维人员在互联网上公开分享他们的" dot 文件"(他们的 shell 配置文件的常见俚语),这将是一个有趣的协作机会,让每个人都能从对命令行有丰富经验的人中