区分两个 Shell

Shell 语言与 Shell 解释器

Shell 语言

写 Shell 脚本使用的是 Shell 语言,Shell 既是一种命令语言,又是一种程序设计语言。

  • 作为命令语言,它交互式地解释和执行用户输入的命令
  • 作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制

Shell 脚本解释器

解析Shell 使用的是 Shell 脚本解释器,一个用 C 语言编写的程序,它是用户使用 Unix/Linux 的桥梁,接口程序。常见的脚本解释器有 bash、sh、csh、ksh......

Shell 的变量

学习 Shell 变量的时候,对变量的定义和使用有一丝迷惑,看下面这个程序。

运行结果

1+2
xiaoming

看到这个运行结果,我感到出乎意料,首先 c 经验不等于3,d 表示字符串不加引号竟然不报错!!!!!!不知到 Linux 课上有没有讲过,可惜我没有那一门课,百度......

Shell 的所有变量默认都是字符型。

所以 a、b、c 直接被当做字符串啦,那变量 a、b 如何进行算术运算呢? 查看 菜鸟教程

使用 expr 命令,例如 c=`expr $a+$b` 可以得到正常的结果。同时还有其他方式可以进行求值。 具体参考 Linux Shell脚本攻略:shell中各种括号()、(())、[]、[[]]、{}的作用

使用 $[] 方式  c=$[$a+$b],类比 [] 不加前面的$,表示进行(算数比较、字符串 ==|!= 的比较、使用数组索引)。

使用 $(())方式 c=(($a+$b)) 只要括号中的运算符、表达式符合C语言运算规则,都可用在$((exp))中,甚至是三目运算符。

思考:当两个字符串使用 算数运算的时候会得到什么结果呢?

参考链接

Shell中各种括号()、(())、[]、[[]]、{}的作用和区别

Shell变量和数据类型

[Bash Shell] Shell学习笔记

Shell变量与算术运算的更多相关文章

  1. Linux Shell变量

    200 ? "200px" : this.width)!important;} --> 介绍 变量是shell脚本中必不可少的组成部分,在脚本中使用变量不需要提前声明.在ba ...

  2. shell脚本之算术运算和逻辑运算

    目录 算术运算 赋值运算 逻辑运算 短路运算和异或 条件测试 数值测试 字符串测试 文件及其属性测试 存在性测试 存在性及类别测试 文件权限测试 文件特殊权限测试 文件大小测试 文件是否打开 双目测试 ...

  3. 2.8 补充:shell变量引用方式

    一 变量   变量:本质上是程序中保存用户数据的一块内存空间,变量名就是内存空间地址.   Shell中:变量可由字母数字和下划线组成,以字母或下划线开头.   命名:PATH=/sbin       ...

  4. shell变量与运算

    shell变量与运算 @(0003 shell编程) 变量存在于内存中.假设变量str,设置或修改变量属性时,不带$号,只有引用变量的值时才使用$号.也就是说在内存中,标记变量的变量名称是str,而不 ...

  5. shell变量

    定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名 ...

  6. linux中shell变量$#,$@,$0,$1,$2的含义解释

    linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行 ...

  7. awk使用shell变量

    awk使用shell变量  (可以计算浮点数) 其实在awk里,是不能直接使用shell变量的 方法是:awk -v 选项让awk 里使用shell变量 TIME=60 awk -v time=&qu ...

  8. shell变量详解

    1 shell变量基础 shell变量是一种很"弱"的变量,默认情况下,一个变量保存一个串,shell不关心这个串是什么含义.所以若要进行数学运算,必须使用一些命令例如let.de ...

  9. 三、Shell变量类型和运算符

    一.Shell变量的应用 1.Shell变量的种类     ·用户自定义变量:由用户自己定义.修改和使用     ·预定义变量:Bash预定义的特殊变量,不能直接修改     ·位置变量:通过命令行给 ...

随机推荐

  1. 在Ubuntu下的C语言编程

    以运行在虚拟机下的Ubuntu为例: mkdir fenchen 来创建一个文件夹 cd fenchen 切换到这个文件夹下面 vi test.c 创建并编辑一个test.c文件 按 i 编辑,之后把 ...

  2. iscsi基本命令

    磁阵操作命令 根据磁阵端配置的业务地址(targetIP)和端口(3260),命令iscsiadm -m discovery -t sendtargets -p targetIP:port(3260) ...

  3. 浅谈对typora的使用

    内容概要 - 什么是typora - typora的具体使用 目录 内容概要 - 什么是typora - typora的具体使用 1. 什么是typora 2.typora的具体使用 1.标题级别 2 ...

  4. 一文带你理解TDengine中的缓存技术

    作者 | 王明明,涛思数据软件工程师 小 T 导读:在计算机系统中,缓存是一种常用的技术,既有硬件缓存,比如我们经常听到的 CPU L2 高速缓存,也有软件缓存,比如很多系统里把 Redis 当做数据 ...

  5. 通过实现仿照FeignClient框架原理的示例来看清FeignClient的本质

    前言 FeignClient的实现原理网上一搜一大把,此处我就不详细再说明,比如:Feign原理 (图解) - 疯狂创客圈 - 博客园 (cnblogs.com),而且关于FeignClient的使用 ...

  6. 12组-Alpha冲刺-2/6

    一.基本情况 队名:字节不跳动 组长博客:https://www.cnblogs.com/147258369k/p/15535639.html 小组人数:10人 二.冲刺概况汇报 侯钦凯 过去两天完成 ...

  7. ECharts 点击事件

    一个问题 ECharts 点击出现多个弹窗

  8. [loj150]挑战多项式

    以NTT为运算基础,即默认支持在$o(n\log n)$的时间内多项式乘法 二次剩余:称$n$为模$p$意义下的二次剩余,当且仅当存在$x$使得$x^{2}\equiv n(mod\ p)$ 当$p$ ...

  9. 多声部处理细节之crossstaff音符处理

    下面给出这几个案例的代码 ,可直接粘贴编译. \version "2.20.0" \language "english" \paper { #(set-pape ...

  10. idea创建 springboot工程(支持jsp)

    以前学springboot以前想搭建一个支持jsp的项目一直弄不上,现在发现用maven创建一个项目然后改成springboot效果一样的 https://blog.csdn.net/gisboygo ...