[变量的类型?]
看看下面的a, b在不同的时候分别是什么类型?
#!/bin/bash a="1234" let "a += 1" echo "a = $a"; b=${a/23/AB}; echo "b = $b"; b=1234 echo "b = $b"; b=abcd echo "b = $b"; b=${a/23/AB}; declare -i b echo "b = $b"; b=1234 echo "b = $b"; b=abcd echo "b = $b";
shell是不区分变量类型的, 我们使用它的时候它会自动选择我们所需要的类型. 就如同上面的第一段代码, a是字符串, 但是让它做加法运算, 很自然地会把它当成数字, 输出:
a = 1235
再看第二段, b被赋值为${a/23/AB}, 即将a中的”23″替换为”AB”, 输出的即为:
b = 1AB5
再接下来, b被重新赋值为1234这样的一个”Int”, 或者是abcd这样的”String”, 很自然地, 输出为:
b = 1234
b = abcd
但是, 我们在第三段代码中使用了一个”declare -i”, 这个就很神奇了. declare是显式指明变量类型, -i表示int.
输出的结果是这样的:
b = 1AB5
b = 1234
b = 0
当b已经是一个字符串1AB5的时候, 输出的值表明它并没有什么变化, 接下来我们赋值为1234这样的int, 也很正常. 但是再次将其赋值为一个字符串, 它表现出来的现象和刚刚第二段就不同了. 输出的内容是0, 即字符串”abcd”被当成一个int类型时, 数值为0
本文链接:https://www.poisonbian.com/post/217.html 转载需授权!