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

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]

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

posted @ 2017-05-22 17:07  noitanym  阅读(357)  评论(0编辑  收藏  举报