Linux学习笔记——read命令、数值运算、常用运算符、变量调试和内容置换

声明:本文参考C语言中文网和Linux命令大全
一、read命令
前面讲过,位置参数变量是可以把用户的输入用参数的方式输入脚本的,不过这种输入方式只有写这个脚本的人才能确定需要输入几个参数,每个参数应该输入什么类型的数据,并不适合普通用户使用。

除位置参数变量外,我们也可以使用 read 命令向脚本中传入数据。read 命令接收标准输入(键盘)的输入,或者其他文件描述符的输入。得到输入后,read 命令将数据放入一个标准变量中。

语法
read【选项】【参数】
选项

-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒);
-n 字符数:read命令只接收指定的字符数就会执行;
-s: 隐藏输入的数据,适用于机密信息的输入;

变量:指定读取值的变量名

例1
第一步:创建文件read.sh,并赋予相应的权限
在这里插入图片描述
第二步:在read.sh中进行编写一下代码
在这里插入图片描述

注意:name和“please input your name:”之间要有空格。如果没有,例如下图就不能正确执行
在这里插入图片描述
这里稍微解释一下上图每一行的含义
(1)read -t 30 -p "please input your name:"name就是提示please input your name并且等待30秒,用户输入的值保存在name中。
(2)read -s -t 30 -p "please enter your age:"age就是提示please input your age并且等待30秒,注意这个值是隐藏的
(3)read -n 1 -t 30 -p "please select your gender[M/F]:"gender就是提示please select your gender且等待30秒,用户输入的值必须是M或者F
第四步:运行文件
在这里插入图片描述
二、数值运算

二、1使用declare声明变量类型
declare命令用于声明和显示已存在的shell变量。declare命令若不带任何参数选项,则会显示所有shell变量及其值。declare的功能与typeset命令的功能是相同的。

语法
declare【选项】【变量名】
选项

-:给变量设定类型属性;
+:取消变量的类型属性;
-a:将变量声明为数组型;
-i:将变量声明为整数型(integer);
-r:将变量声明为只读变量。注意,一旦设置为只读变量,既不能修改变量的值,也不能删除变量,甚至不能通过 +r 取消只读属性;
-x:将变量声明为环境变量;
-p:显示指定变量的被声明的类型;

例1:数值运算
在这里插入图片描述
例2:数组
在这里插入图片描述
例3:声明环境变量
在这里插入图片描述
二、2 使用expr或let数值运算工具
进行数值运算的第二种方法是使用 exp 命令,这个命令就没有 declare 命令那么复杂了。

语法
expr【选项】【参数】
选项

--help:显示指令的帮助信息;
--version:显示指令版本信息。

参数
表达式:要求值的表达式。
expr常用的运算有加法运算:+减法运算\*乘法运算/除法运算求摸(取余)运算:%

例1:加法运算
在这里插入图片描述
可见要进行加法运算=="+"号左右两侧必须有空格,否则运算不执行==,并且expr和变量时间也应该有空格

例2:乘法运算
在这里插入图片描述

三、常用运算符
shell中常用的符号运算有

优先级运算符说 明
13-,+单目负、单目正
12!,~逻辑非、按位取反或补码
11*, /, %乘、除、取模
10+, -加、减
9<<, >>按位左移、按位右移
8<=, >=, <, >小于或等于、大于或等于、小于、大于
7== ,!=等于、不等于
6&按位与
5^按位异或
4|按位或
3&&逻辑与
2II逻辑或
1=,+=,•=,*=,/=,%=,&=, |=, <<=, >>=赋值、运算且赋值

注:数值越大优先级越高,具有较高优先级的运算符先于具有较低优先级的运算符进行求值运算

四、变量调试和内容置换

在脚本中,有时需要判断变量是否存在或是否被赋予了值,如果变量已经存在并且被赋予了值,则不改变变量;如果变量不存在或没有被赋值,则赋予其新值。这时我们就可以使用变量测试与内容置换。

我们在脚本中可以使用条件判断语句 if 来替代这种测试方法,不过使用 Shell 自带的变量置换更加方便,但是这种方法容易记混。先来看一下变量置换有哪些方式

变量置换方式变量y没有设置变量y为空值变量y设置值
x=${y-新值}x= 新值x 为空x=$y
x=${y:-新值}x= 新值x= 新值x=$y
x=${y+新值}x 为空x= 新值x=新值
x=${y:+新值}x 为空x 为空x=新值
x=${y=新值}x= 新值x 为空x=$y
y= 新值y 值不变y值不变
x=${y:=新值}x= 新值X= 新值x=$y
y= 新值y= 新值y值不变
x=${y?新值}新值输出到标准错误输出(屏幕)x 为空x=$y
x=${y:?新值}新值输出到标准错误输出新值输出到标准错误输出x=$y

看完是不是有点不懂?别急看一下例子你就会理解了

例1

变量置换方式变量y没有设置变量y为空值变量y设置值
x=${y-新值}x= 新值x 为空x=$y

在这里插入图片描述
在这里插入图片描述
这里就是变量y没有设置的情况下x=新值
在这里插入图片描述
这里是变量y设置为空值的情况下x=空
在这里插入图片描述
这里是变量y设置有值的情况下x=y

注意:
如果大括号内没有":",则变量 y 为空或没有被设置,处理方法是不同的;如果大括号内有":",则变量 y 不论是为空,还是没有被设置,处理方法是一样的。

如果大括号内是"-“或”+",则在改变变量 x 的值的时候,变量 y 的值是不改变的;如果大括号内是"=",则在改变变量 x 的值的同时,变量 y 的值也会改变。

如果大括号内是"?",则当变量 y 不存在或为空时,会把"新值"当成报错输出到屏幕上

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kinghiee

爸爸们求打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值