Shell基础之Read接收键盘输入、使用 declare 声明变量类型

目录

Read接收键盘输入

使用 declare 声明变量类型

数值运算

数组变量类型

环境变量

只读属性

查询变量属性和取消变量属性


Read接收键盘输入

[root@localhost ~]# read [选项] [变量名]
  • 选项:
    • -p     “提示信息”: 在等待 read 输入时,输出提示信息
    • -t      秒数: read 命令会一直等待用户输入,使用此选项可以指定等待时间
    • -n     字符数: read 命令只接受指定的字符数,就会执行
    • -s: 隐藏输入的数据,适用于机密信息的输入
  • 变量名:
    • 变量名可以自定义,如果不指定变量名,会把输入保存入默认变量 REPLY
    • 如果只提供了一个变量名,则整个输入行赋予该变量
    • 如果提供了一个以上的变量名,则输入行分为若干字,一个接一个地赋予各个变量,而命令行上的最后一个变量取得剩余的所有字
[root@localhost sh]# vi read.sh 
#!/bin/bash
read -t 30 -p "Please input your name: " name
#提示“请输入姓名”并等待 30 秒,把用户的输入保存入变量 name 中
echo "Name is $name"
#看看变量“$name”中是否保存了你的输入
read -s -t 30 -p "Please enter your age: " age
#提示“请输入年龄”并等待 30 秒,把用户的输入保存入变量 age 中
#年龄是隐私,所以我们用“-s”选项隐藏输入
echo -e "\n"
#调整输出格式,如果不输出换行,一会的年龄输出不会换行
echo "Age is $age"
read -n 1 -t 30 -p "Please select your gender[M/F]: " gender
#提示“请选择性别”并等待 30 秒,把用户的输入保存入变量 gender
#使用“-n 1”选项只接收一个输入字符就会执行(都不用输入回车)
echo -e "\n"
echo "Sex is $gender"
  • 案例:

使用 declare 声明变量类型

  • 既然所有变量的默认类型是字符串型,那么只要我们把变量声明为整数型不就可以运算了吗?使用 declare 命令就可以实现声明变量的类型。命令如下:
[root@localhost ~]# declare [+/-][选项] 变量名
  • 选项:
    • -: 给变量设定类型属性
    • +: 取消变量的类型属性
    • -a: 将变量声明为数组型
    • -i: 将变量声明为整数型(integer)
    • -r: 讲变量声明为只读变量。注意,一旦设置为只读变量,既不能修改变量的值,也不能删除变量,甚至不能通过+r 取消只读属性
    • -x: 将变量声明为环境变量
    • -p: 显示指定变量的被声明的类型

数值运算

[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
#给变量 aa 和 bb 赋值
[root@localhost ~]# declare -i cc=$aa+$bb
#声明变量 cc 的类型是整数型,它的值是 aa 和 bb 的和
[root@localhost ~]# echo $cc
33

数组变量类型

  • 数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量成为数组的分量,也称为数组的元素,有时也称为下标变量。
[root@localhost ~]# name[0]="shen chao"
[root@localhost ~]# name[1]="li ming"
[root@localhost ~]# name[2]="tong gang"
[root@localhost ~]# echo ${name}
shen chao
#输出数组的内容,如果只写数组名,那么只会输出第一个下标变量
[root@localhost ~]# echo ${name[*]}
shen chao li ming tong gang
#输出数组所有的内容
  • 注意数组的下标是从 0 开始的,在调用数组值时,需要使用${数组[下标]}的方式来读取。不过好像在刚刚的例子中并没有把 name 变量声明为数组型,其实只要我们在定义变量时采用了“变量名[下标]”的格式,这个变量就会被系统认为是数组型了,不用强制声明。

环境变量

  • 使用 declare 命令把变量声明为环境变量,和 export 命令的作用是一样的:
[root@localhost ~]# declare -x test=123
#把变量 test 声明为环境变量

只读属性

  • 注意一旦给变量设定了只读属性,那么这个变量既不能修改变量的值,也不能删除变量,甚至不能使用“+r”选项取消只读属性。命令如下:
[root@localhost ~]# declare -r test
#给 test 赋予只读属性
[root@localhost ~]# test=456
-bash: test: readonly variable
#test 变量的值就不能修改了
[root@localhost ~]# declare +r test 
-bash: declare: test: readonly variable
#也不能取消只读属性
[root@localhost ~]# unset test
-bash: unset: test: cannot unset: readonly variable
#也不能删除变量
  • 好这个变量只是命令行声明的,所以只要重新登录或重启,这个变量就会消失了。

查询变量属性和取消变量属性

  • 变量属性的查询使用“-p”选项,变量属性的取消使用“+”选项。命令如下:
[root@localhost ~]# declare -p cc
declare -i cc="33"
#cc 变量是 int 型
[root@localhost ~]# declare -p name
declare -a name='([0]="shen chao" [1]="li ming" [2]="tong gang")'
#name 变量是数组型
[root@localhost ~]# declare -p test
declare -rx test="123"
#test 变量是环境变量和只读变量
[root@localhost ~]# declare +x test
#取消 test 变量的环境变量属性
[root@localhost ~]# declare -p test
declare -r test="123"
#注意,只读变量属性是不能取消的

【注】:参考尚硅谷沈超老师教程

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值