00:00
好,这节课呢,我们继续来聊shell中的read命令,那read呢,是he中的一个内接命令,主要用于从键盘上读取内容并复制给变量,那我们直接来演示一下,比如说编辑一个shell脚本。好,出现这种情况是为什么呢?因为我之前编辑过一个4.sh这个文件,然后并把它删除了,它有一个临时的探在这,那我们只要输入点啊swap啊,这个文件就可以不再有刚刚的这种提示,那我再次编辑V啊,点SSH大家可以看到直接进来啊,那这是刚刚这个问题的一个解决好the read怎么用呢?首先比如说我让你输入一下你的密码啊,输入一下你的名字。Please input your name,我打印出你的名字,两个is是吧,我直接让大家看一下效果哈,那首先呢,提示你输入名字,比如说输入地。
01:16
啊,直接打印出来这个你的名字是什么对吧?就把我这个变量打印出来了,那大家可以看到刚刚我用的是echo,也就是说你在把键盘上的数字啊,或者是字符串赋值给这个name变量的时候呢,你首先要提示用户,你要要用户做什么对吧?那我用的是equal equal,那其实read本身它有一个参数,就是杠P好看P这个参数让你啊所以这个变量输入的时候呢,加了一个描述,我们来看下效果啊。
02:01
大家可以看到please in fair name好,直接把你的名单打印出来了,那这是跟刚刚的效果是一样的,那紧接着呢,我们模拟去这个银行,输入这个银行的程序,就是我们去银行取钱对吧?那首先你要输入你的姓名,紧接着呢,你要输入你的密码是吧?我把密码赋值给pass这个变量,然后紧接呢,就打印出your pass is,大家可以看一下效果哈,我SH执行一下,看一下输入用户名个娃。密码1234567。那我直接回车,大家可以看到哈,和刚刚一样,把我的变量名字这个从键盘输入的打印出来了,然后我这个便利名字pass啊,从键盘上输入的123456也给打印出来了,但是我们去银行去取钱的时候,这个密码显然是输入的时候是不可见的,对吧,那怎么让它不可见呢?
03:13
我们要加一个杠S参数隐藏输入啊隐藏输入。来我们保存看一下啊,我执行SH啊,输入你的名字,我再次输入123456,我直接回车啊大家可以看到刚刚我输入的时候呢,它并没有打印出这个密码,对吧?但是它在打印的时候,就是我程序执行到呃eo的时候呢,它会把我的名字和密码打印出来,那说明刚刚这个密码在输入的时候呢,帮隐藏了那这个位置啊,它折行了哈,就是两行变成一行了,我们先要让它折行,怎么折行了。直接打印一个开口就可以了,我们再看一下效果啊,这样可能会嗯更好一些效果看对吧,我其实输入密码,但是你是看不到的啊,那还有一个对这个字符串的长度也是有要求的啊,比如说我杠S杠。
04:19
P。杠N6,比如说你的密码长度呢,最长就是六米啊,这里边有一个注意的啊,这个参数啊,一定要有一个顺序,那不要把这个杠P后边再加杠S啊,因为杠P呢,它的子参数是这一串文字描述啊,英文字母描述,所以你这样输入的时候可能会报错,所以这里边有一个顺序,首先是杠S啊,对你的输入进行了隐长,再接着是杠N6啊,N6是什么意思呢?代表你输入字符串的一个计数,那我只能让它输入六个字母字符串我们看一下啊,我提醒一下,我输入名字,那我输入12345678。
05:06
啊,我在输入123456的时候呢,它会把变量复制给pass啊,就直接退出了,那我再输入七八就跑到了已经退出程序后的一个效果啊,那这是这个杠N的参数,那除了杠N参数以外呢,还有一个比较常用的参数就是这个杠T的参数。我们来看一下杠T呢,其实是一个超时。比如说这个位置我们加一个杠T5秒超时,我在执行的时候,大家可以看看一下,我什么也不输入啊,啊刚刚这个输入name的时候呢,就已经超时了,那程序就会继续往下执行,那继续往下执行呢,就让你输入你的密码对吧?因为密码我没有加这个超时的参数,那你可以一直在这等,那我现在输入1233456大大家可以看到啊,那当前呢,刚刚因为刚刚我这个name超时了,所以它是为空的,所以1NAME is啊是个空的字段,那密码呢,没有交超时这个参数,那我输入123456,它就把这个123456打印出来了,那这就是这个read的命令最常用的一些参数,嗯,最常用的一些参数。
06:27
哦,这个命令,呃,这个杠T呢,这里边儿还有一个案例哈,就是我们看一下这个体验。解释一下什么意思呢?首先是read-T啊,五代表五秒钟超时,杠P啊,这个负值变量的一个描述,让你输入你的名字,而紧接着判断这个Dollar符问号是否等于零,也就是说上面这句话,它退出的状态的时候,它的退出状态是零还是非零?如果你要是在五秒之内赋值给这个变量,那那就是等于零,如果非五秒超时了的话,那屏幕就会打印一个turnout,我们看下效果,我执行一下这个脚本,我什么也不输入,五秒后屏幕上就会打印出timeout。
07:27
大家可以看到啊,这有个timeout啊,这里不报了一个错,什么错呢?我们可以看一下play in。第三行。乙三哈,好,这多一个U好的保存在实现上,五秒钟直接会打印出timeout。好,那这呢就是啊,这个timeout又是没有折行,我加一个折行,折行了就直接下艾就可以了啊。
08:06
看一下。五秒没有输入come out,好,那如果要是输入呢,比如说那就直接打印出这个输入的。字符串,那这就是read经常用的这几个参数,那除了这几个参数以外呢,我们再来看一下上面这个a shell的一些符号啊,这是最常用的一些符号啊,比如说刚刚我们在呃测试的时候,你会发现它经常没有折行,对吧?那这时候我们就可以在这里边加一个eo啊,来打印一个反斜盖回车啊,来让它自动去折行。我们看一下这个效果哈,如echo一个大概是什么效果哈啊,它我直接eo的时候呢,它是打印这个字符串,同时加一个板斜杠N,代表换新行,使大家看不到啊换新行,那如果我要是不换行呢,我就可以加一个在Apple前面加个N,大家可以看看一下啊,我执行的时候它会显示什么样子啊,它执行这句话的时候,我一回车,它直接和下一行进行了重叠啊,也就是说它杠N参数的时候呢,是去掉了这个反斜杠N。
09:29
去掉了反方,如果你要是不加这杠N参数的话,它就会把结尾的换行符加上啊,结尾的括号加上,那还有就是。杠N是不解释不解析参数中的特殊符号,那杠E呢,是解析参数内的特殊符号,什么意思呢?我们来看一下啊,我加了一杠一,我这加了一个。反斜杠T,反斜杠T代表什么意思呢?代表制表符,我们看一下什么效果啊。
10:09
哎,可以看到啊,这里多了一个就是制表符,而不是空格啊,那我再加一行,我去掉杠一看什么效果啊,去掉版型上T加空格,大家看一下什么效果。那那上面这个位置呢,是制表符,下边这个位置呢是空格,那这就是这个制表符的一个含义,那不同的符号呢,它有一个特殊的含义,那这个含义呢,会罗列在这里啊,那其实最经常用到的就是反斜杠N,反斜杠T这两个基本这个特殊符号是会经常用到的。那这是80LL中的最常用的这个符号相关的一些,那大家也可以看一下这个下面这个场景二哈,呃,就是这个print f,那print f的话,其实呃,相对于eo比的话,我个人用的不是很多哈,但是他在C语言下用的也是很多的,如果你对C比较了解,又想用这个print f这个啊,相同的这个类似的不能说相同啊,应该说类似的这个啊功能的话也可以。
11:15
在80中也是可以的啊,那具体的使用方式的话,可以看一下我这个案例,这里边就不多介绍了哈,我们只介绍最常用的一些命令,好,那这节课呢,我们介绍了这个read啊,Read命令,那read呢是一个内接命令,还有介绍了它的一些常用的参数,好最后呢,就介绍一下bus中的一些常用的符号,那好,这节课呢,我们就介绍到这里。
我来说两句