shell中的变量a=100, 什么时候作整数使用, 什么时候作字符串使用呢?

时间:2020-12-03 07:33:28

shell中的变量a=100, 什么时候作整数使用, 什么时候作字符串使用呢?

这确实是一个困扰很久的一个问题? how it can be an issue?

事实上, 在shell中, 你可以认为存在数据类型, 只有三种, 即: 整数变量, 字符串变量, 文件变量.
也可以认为, 不存在数据类型, shell在 定义变量的时候, 总是 "默认"的把变量 认为是 字符串.

那关键就在于: 你是如何使用, 如何操作 shell变量的, 根据你的操作,你的 命令, 你的操作符 来决定该shell变量是 作为 一个整数,还是 作为 一个字符串, 还是作为 一个 文件变量. 所以 shell变量是什么类型并不是固定的, 完全在于你的操作!!!

比如:

foo=100
let foo+=100, 那么由于此时你使用的是, let 操作, let命令, 因此, 这里的foo就是作为 一个整数变量来 对待的, 或者说, foo是一个整数变量
echo $foo // 输出200

foo=$foo+100 ,这里由于没有使用 let expr等命令, foo就是作为一个字符串变量来对待的, 或者说, foo是一个字符串变量.
echo $foo // 输出200+100, 加号是shell字符串**连接**的运算符

在shell中, 有三种进行整数计算的方式

  1. let
  2. expr
  3. $[ ...] 单中括号加$符号, 如: a=$[1+2]
    shell中的变量a=100, 什么时候作整数使用, 什么时候作字符串使用呢?

speak of: 谈到, 说到, speak of the devil [dev2l] 说曹操曹操到.