文章首发于【陈树义的博客园】,点击跳转到原文:https://www.cnblogs.com/chanshuyi/p/quick_start_of_shell_06_basic_data_type.html
Shell 语言是一门弱类型的语言,它并没有数据类型上的概念。无论你输入的是字符串、数字,在 Shell 中都按照字符串类型来存储。至于具体是什么类型,Shell 根据上下文去确定。 例如下面当你尝试对一个字符串进行加一操作时,Shell 运行时便会报错。
#!/bin/bash
num="Hello"
echo `expr $num + 1` //expr: not a decimal number: 'Hello'
num=1
echo `expr $num + 1` //2
这是因为虽然 Shell 语言是弱语言类型,但其解释执行的时候会进行语法检查。意识到 Shell 在数据类型上的特殊性很重要,这样你就不会犯一些基础错误了。例如下面的例子:
result="false"
if $result
then
echo "true."
else
echo "false." # 输出false
fi
虽然上面的 result 变量是一个字符串,但是实际上在运行时,Shell 是将其当成一个布尔型的值进行比较的。当你将 result 改成 true 之后,结果便会输出 true。