Jieen 2020-04-18
一、read 接收键盘输入
read [选项] [变量名]
选项:
-p 提示信息
-t 秒数
-n 字符数
-s隐藏输入的数据
例子:使用read 提示输入参数值
结果:
与位置参数变化相比,更友好
二、declare 声明变量类型
+ 取消变量的类型属性
- 给变量设置类型属性
-a 设置变量类型为数组
-i 将变量类型声明为整数型
-x 将变量声明为环境变量
-p 显示变量的被声明类型
例如1:a 没有定义类型,默认为字符串,当定义a为整型(-i),在将字符串赋值给a时,此时当然会失败,输出为0.查看a的属性(-p),为整形
:~/shellTest$ declare -p a declare -- a="1" -virtual-machine:~/shellTest$ declare -i a -virtual-machine:~/shellTest$ a=‘we‘ -virtual-machine:~/shellTest$ echo $a 0 -virtual-machine:~/shellTest$ a=12 -virtual-machine:~/shellTest$ echo $a 12 -virtual-machine:~/shellTest$ declare -p a declare -i a="12"
例如2:声明b为数组,并显示数组
:~/shellTest$ declare -a c=‘([0]=1 [2]=‘11‘ [3]=‘aa‘)‘ -virtual-machine:~/shellTest$ echo ${c[2]} 11
数组赋值
1、按需添加
:~/shellTest$ b[0]=1 -virtual-machine:~/shellTest$ b[1]=2 -virtual-machine:~/shellTest$ echo ${b[*]} 1 2 -virtual-machine:~/shellTest$ echo ${b[@]} 1 2
2、一次性添加多个元素
:~/shellTest$ declare -a c -virtual-machine:~/shellTest$ c=(1 2 3) -virtual-machine:~/shellTest$ echo ${c[*]} 1 2 3
3、按稀疏格式添加
:~/shellTest$ declare -a c=‘([0]=1 [2]=‘11‘ [3]=‘aa‘)‘ -virtual-machine:~/shellTest$ echo ${c[2]} 11
数组不是按照0123这样的顺序来的
4、通过read -a 方式添加
#!/bin/bash read -p "please input shuzu:" -a e echo ${e[*]} echo ${e[2]} -virtual-machine:~/shellTest$ test07.sh please input shuzu:3 4 34 3 4 34 34
注意事项:引用变量的时候,花括号不能少,用括号来表示数组,数组元素用"空格"符号分割开
删除数组中的某个值/删除数组
:~/shellTest$ echo ${c[*]} 1 2 3 -virtual-machine:~/shellTest$ unset c[2] -virtual-machine:~/shellTest$ echo ${c[*]} 1 2 -virtual-machine:~/shellTest$ unset c -virtual-machine:~/shellTest$ echo ${c[*]} -virtual-machine:~/shellTest$
取消变量的类型
例如:a为整型,使用+ 删除a的整型属性
:~/shellTest$ declare -p a declare -i a="12" -virtual-machine:~/shellTest$ declare +i a -virtual-machine:~/shellTest$ declare -p a declare -- a="12" -virtual-machine:~/shellTest$
三、运算
数值运算的三种方法
①declare(不推荐)
②使用expr或let 运算工具(不推荐)
:~$ a=12 -virtual-machine:~$ b=23 -virtual-machine:~$ c=$(expr $a + $b) -virtual-machine:~$ echo $c 35 -virtual-machine:~$ let e=$a+$b -virtual-machine:~$ echo $e 35 -virtual-machine:~$ 注意事项:1、+两边需要空格 2、$() 是指调用系统命令
③使用$(()) 或$[] 进行数值运算
:~$ a=11 ; b=33 -virtual-machine:~$ echo c=$(($a+$b)) c=44 -virtual-machine:~$ echo d=$[$a+$b] d=44 -virtual-machine:~$
例子:四则运算计算器(第一版)
#!/bin/bash read -t 30 -p "please input num1:" num1 read -t 30 -p "please input num2:" num2 read -t 30 -p "please input operato:[+-*/]:" oper [ "$oper" == "+" ] && echo "$(($num1+$num2))" && exit [ "$oper" == "-" ] && echo "$(($num1-$num2))" && exit [ "$oper" == "*" ] && echo "$(($num1*$num2))" && exit [ "$oper" == "/" ] && echo "$(($num1/$num2))" && exit echo "please input a varible operato"
缺点及注意点:此例中num1、num2未作判断。且[] 两边需要空格,否则会报错
四、变量的测试与内容置换
例如1:如果没有设置变量a,则x值为新值。如果a设置为空,则x值为空值。如果设置为123,则x的值为123.
可以用来测试变量是否存在或者有值