目录
Shell的常用的数据类型主要有以下三种,分别为数字、字符串和数组。
1、数字
数字主要分为整数(int)和浮点数(float)
age=10 #定义一个整数10的变量名为age
echo ${age} #显示该变量的值
#输出结果为:10
height=190.2 #定义一个浮点数190.2的变量名为height
echo ${height} #显示该变量的值
#输出结果为:190.2
如果我们想计算两个整数和两个浮点数相加在shell中应该是什么样。
整数计算
A=10 #定义一个变量A的值是10
B=5 #定义一个变量B的值是5
echo “$A+$B” #先按着正常的思路来看下打印值是什么
# 打印的结果为 “10+5”
echo $[$A+$B] #在shell中所有变量默认都是字符串型,不能直接运算的,如果想直接运算需要用“$((运算式))”或“$[运算式]”这种形式
#这样处理打印的结果就为 15 了
echo "$(($A+$B))"
#这样处理打印的结果就为 15 了
浮点数计算 Shell默认不支持浮点数运算,需要通过第三方库bc
进行浮点运算,安装方式为:yum -y install bc
C=3.3 #给变量C赋值浮点数3.3
D=3.4 #给变量D赋值浮点数3.4
echo "$C+$D" #看下浮点数能不能正常显示出来
#浮点数可以正常显示出来 3.3+3.4
echo $[$C+$D] #再用下计算整数的方法去计算浮点数试试
#但是计算时就会报错了 -bash: 3.3+3.4: syntax error: invalid arithmetic operator (error token is ".3+3.4")
echo "$C+$D" | bc #计算浮点数就需要安装第三方库bc来进行计算了
#安装bc后进行计算可以正常计算出来 6.7 bc安装方式:yum -y install bc
2、字符串
字符串在shell中可以使用单引号、双引号或者不带引号都行,但是建议最好根据实际情况去选用单引号或者双引号,不要不带引号,有时候变量中如果有空格是很容易出错的。
不带引号的情况:
Atom=apeople #定义变量Atom,变量值中没有空格
echo ${Atom} #显示该变量的值
#变量的值为apeople
Atom1=a people #定义变量Atom1,变量中的值有空格
#直接报错 -bash: people: 未找到命令
echo ${Atom1} #显示该变量的值
#尝试显示Atom1的变量的值,显示值为空
单引号和双引号在上一章已经说过了,正好这里在复习下。
单引号:单引号会直接打印出单引号里的值,不会去关注里面有没有变量啊什么的,会原封不动的把单引号里面的值打印出来。
Atom2=good #首先定义一个变量Atom2
Atom3='two ${Atom2}' #在定义一个变量Atom3,观察其变量值,看看打 印结果是什么
echo ${Atom3} #显示该变量的值
#打印结果为 :two ${Atom2}
双引号:如果我们想在变量值里加上其他变量并且打印出其变量的值,这时候我们就可以使用双引号。
Atom4=good #首先定义一个变量Atom4
Atom5="two ${Atom2}" #在定义一个变量Atom5,这次使用双引号观察其 变量值,看看打印结果是什么
echo ${Atom5} #显示该变量的值
#Atom5的变量的值为two good
获取字符串的长度 在变量名前加#号即可
3、数组
在Shell中,仅支持一维数组,元素下标由0开始,可通过下标进行赋值和取值操作,Shell 数组用括号来表示,元素用"空格"符号分割开。
F=(A 123 ATOM 你好) #定义一个数组F
在数组中可以使用下标来取出来对应的值,${变量名[下标]}
F=(A 123 ATOM 你好) #定义一个数组F
echo ${F[1]} #打印出数组中下标为1的值
#打印的是下标为1的值 123
在数组中可以使用#来计算数组的长度,${#变量名[*]}或者${#变量名[@]}
F=(A 123 ATOM 你好) #定义一个数组F
echo ${#F[*]} #打印出数组中元素的个数
#打印结果为:4 数组中一共有4个元素
echo ${#F[@]} #打印出数组中元素的个数
#打印结果为:4 数组中一共有4个元素
要获取数组中的所有元素可以有以下几个方法,${变量名[*]}或者${变量名[@]}或者"${变量名[@]}";如果想以一个元素的形式输出的话需要加上双引号"${#变量名[*]}"。(使用"${变量名[@]}"输出的也是多个元素的形式)
F=(A 123 ATOM 你好) #定义一个数组F
echo ${F[@]} #打印出数组中的所有元素
#打印出了所有的元素 A 123 ATOM 你好
echo "${F[@]}" #打印出数组中的所有元素
#打印出了所有元素 A 123 ATOM 你好
echo "${F[*]}" #打印出数组中的所有元素
#打印出了所有元素 A 123 ATOM 你好
echo "${F[*]}" #打印出数组中的所有元素,以一个字符串处理
#打印出了所有元素 但是这个是以一个字符串打印出来的 A 123 ATOM 你好
for i in ${F[@]};do echo $i;done #使用for循环打印下就能看出来了
#打印结果
A
123
ATOM
你好
for i in "${F[@]}";do echo $i;done #使用for循环打印下就能看出来了
#打印结果
A
123
ATOM
你好
for i in ${F[*]};do echo $i;done #使用for循环打印下就能看出来了
#打印结果
A
123
ATOM
你好
for i in "${F[*]}";do echo $i;done #使用for循环打印下就能看出来了
#打印结果 A 123 ATOM 你好
下图为公众号二维码,内容会同步发出,大家可以关注一起学习