Shell script: 整数 vs 字符串

在Linux Shell中,Bash是最常用的一种。Bash语言中,变量定义的时候是不需要指定类型的,因为所有变量都是字符串类型的。

但有的时候,我们需要一个变量存的是整数,这样,我们可以方便对其加加减减。这如何做到呢?

Bash语言其实是支持算术操作和比较的,这要求变量中存的每一个字符都是数字。如 VAR=123,这样的变量可以进行算术操作或比较;而VAR=abc,这样的变量就不行了。

1 Bash语言中的算术操作:

双圆括号被用于告诉Bash,括号中的内容是算数操作:

$((算术操作))

例如:

# VAR=123
# ((VAR++))
# echo $VAR
124

# ((VAR=42))
# echo $VAR
42

# for ((VAR=0; VAR<10; VAR++))
> do
>     echo $((VAR + VAR + (2 * VAR)))
> done
0
4
8
12
16
20
24
28
32
36

一个错误的例子:

# VAR=abc
# ((VAR++))
# echo $VAR
1

2 Bash中的算数比较:

# VARIABLE=123
# if [ $VARIABLE -eq 123 ] ; then echo yes ; else echo no ; fi
yes

或者

# VARIABLE=123
# if [ $VARIABLE == 123 ] ; then echo yes ; else echo no ; fi
yes

还有很多算术比较的关键字,如:-ge (大于或等于),-gt(大于)... ,这些符号可以通过 man test 命令查到:

# man test

[(1)                         User Commands                        [(1)

NAME
       test - check file types and compare values

SYNOPSIS
       test EXPRESSION
       [ EXPRESSION ]
       [ OPTION
...

参考文献

  1. Advanced Bash-Scripting Guide: 4.3. Bash Variables Are Untyped
  2. Stack Overflow: How to use double or single brackets, parentheses, curly braces
  3. Bash Reference Manual 3.5.5 Arithmetic Expansion
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在Linux Shell中有很多的特殊符号,这对于我们写Shell脚本时要特别留意:一方面要知道这些特殊符号的用法...
    时待吾阅读 555评论 0 4
  • 一,shell题记 不懂shell的程序员不是好程序员,学习shell是为了自动化,使用自动化可以非常有效的提高工...
    架构师小秘圈阅读 8,793评论 3 70
  • 1.创建文件夹 !/bin/sh mkdir -m 777 "%%1" 2.创建文件 !/bin/sh touch...
    BigJeffWang阅读 10,495评论 3 53
  • 一、《蛋糕英语》 二、用两个骰子练习口算 三、学会了飞行棋 四、陪妈妈看演唱会
    龙子虎妈阅读 230评论 3 0
  • 越努力,越焦虑,到底是一个怎样的心态? ——————————分割线—————————— 我是家里的小幺,家庭条件还...
    Jiakiki阅读 206评论 0 0

友情链接更多精彩内容