00:00
大家好,欢迎大家继续收看上硅谷的云计算课程,我是沈超老师。这节课我们继续来学习变量,我们来学习位置参数变量。前面我们讲了,我说我们变量在Windows下,上下我们分了这样四种类型,前两种用户自定义变量和环境变量,我们都已经讲过了,对吧?我们今天来学习第三种位置参数变量。那这种变量呢,它的名称,它的作用都是确定的,它的内容是可以更改,也就是说变量名你不能改,它的作用你也不能随便改。那位置参数变量有哪些呢?我们一个一个来看,第一个到N。N是数字。用零代表命令本身,一代表这个命令后面执行,执行的你这个脚本命令后的第一个参数,二代表第二个,三代表第三个参数,如果有十个以上的参数用到了。大括号十的方式把它括起来,如果是11就是11,这样的话代表命令后第几个参数。
01:06
各位。这样做,这是一个典型的向上脚本当中传递值的这样一个,这样一个,呃,参数,或者说这样一个变量,各位这样做呢,我们说它其实还是为了进行运算的方便,那我们看看它到底是什么,这样说太枯燥了,或者说太空洞了,我们来看一下,我们写一下。我们写一个就S看count.sh计数计算器,写个简单的计算器,所有的12脚本必须如此,开头不多说了,那我们干嘛?我第一个变量A,变量名等于变量值等于到一。定义变量B等于到,然后定义变量萨姆等于。各位注意一件事,我现在想做的事情是啊。在这个命令后面输入值,比如说输入一个数值幺,幺和二。
02:02
那我们说过了,命令后的第一个参数会传递给高德,命令后的第二个参数是不是会传递给高达,然后呢,我想把这两个数给加起来,然后把它的值赋给萨姆这个变量,换句话说就用来这个脚本是用来计算这两个后面加的这个这个这个俩数的和的,用来计算和的。那但是啊,我们前面一直在讲。在事当中,它为了简化的需要,所以它不仅仅是这个变,这个变量的类型,不按它的这个数,这个变量的数值啊字符串来定行类型,它把它统一理解为都是字符串型。那也就是说,如果你在这里写幺幺和二,他不认为这是俩数。哎,只有这两个是数字,它们两个是不是三个相加得出结果是不是三三,但如果是字符串的,有些程序智能一点,它会干嘛把字符串幺幺和二连起来。有些就会直接报错字符串,他认为是不能相加的。所以在十当中,如果要想进行数值运算,需要用Dollar双小括号把你的运算的算式给括下来,他才知道这是数字运算。
03:15
小心啊,不是高了单小括号。Dollar单小括号是用来括系统命令的,括起来之后他才知道这是命令,然后运行命令把结果付给月亮。这里是双小括号,括起来之后双小,双小括号括起来之后他才知道里面是数字,要进行数学运算,所以你看懂这个格式啊。好了,那现在我要做的就是把Dollar Dollar a加到B。让Dollar a和Dollar b相加,诶,也就是说让A和B的值相加,当然其实我说不写A和B也行,直接在这里写刀一刀二也行,我这样写还是为了让你看起来更清楚一点,所以我稍微多写点啊,然后直接输出它的和就行了,输出萨姆这个变量。
04:01
把它的值是不是赋给萨姆,哎,让他这个输出这个值拿了,就这么简单,一个加法运算器,那我们回撤。那我们给它附一个直权限,我们让它运行一下,给它复直行,然后countt直行给它里边后面加值回撤,哎,它输出的内容是不是就是。我的这个和看懂了吗?那这就是告诉你啊。DO1里面保存的是你命令之后的第一个参数,DO2保存的是命令之后的第二个参数,看明白了,看明白了,那DO0呢,到零就是保存了你这个命令本身,你执行的是哪个命令,它就把谁放在里面,那我们确认一下,怎么确认呢?那我们还是修改count就行,只要在里面干嘛,比如说我可以再直接输出一下,比如说。我输出一下,我再输出一下AQ到零到零可以吧,那我们这个时候我就可以看到来回车。
05:01
还是这个脚本看。Dollar Dollar sum里边是不是包含的就是它俩相加?对吧?刀勒零是什么?刀勒零是你执行命令的第一个第一列,也就是这个命令本身,那所以它输出的内容是不是就是这个命令本身,这就是刀刀零的作用。看到了DO0代表命令本身,你执行的是谁就是谁,DO1代表后面的第一个参数,DO2代表其后的第二个参数,以此类推,由如果有十个以上的参数,注意这个格式啊,这个格式还是比较别扭,那各位。为什么要有这样的未知参数变量呢?目的就是为了干嘛把角把这个值是不是传递给脚本里面对吧?哎,我的脚本里面写的仅仅只是要把两个数相加对吧?哎,如果我要把这数写进去,比如说我就写成二二。加三三。哎,那这个脚本是不是就写死了,我是不是就只能运算二二加三三。
06:02
我如果想变个数,我是不是就得改脚本,这是不是就不合理,那如果用这种方式接收进去呢?那我这俩数是不是就可以随便改,比如说我可以运算二加三三,我也可以进行,比如说234加567,这都是可以的,对不对?他就可以帮你来运算。这样做的话,它的好处就是你可以干嘛,随时随地把这个指数传到脚本里。然后让他是不是随时进行换算,这样的话就不至于说把脚本写死,OK,这是它的优点,也就是我们说这样做的目的是向脚本中传值。但是这样做用位置参数变量,像脚本当中传递参数,我们也把它简称为传参,是有一个明显缺点。什么缺点?哥在。我普通用户,如果这个脚本不是我想的。如果不是我写的,你们也没有上课看,你们就直接拿着脚本,你也看不懂,我问你,你怎么知道需要在这个脚本后面加俩数?
07:07
他才可以正确运行。没错吧,他没有任何提示,也没有任何的这种这种这种这种输出或者是这种提醒,反正就是说我根本普通用户,除非这个脚本就是我自己写的。或者就像你们这样上课,跟我一块儿在上课,否则你根本不知道这个脚本后面需要加两个值。所以用位置参数变量传参并不适合给普通用户来用,那一般是可以什么给作者来用,哎,当然啊,这种传参不光可以往脚本里传,也可以往这个函数里传,那么位置变量位置参数变量主要是向函数中传递参数用,换句话说就是给编程作者用的,不是给普通用户用的,那普通用户怎么办?我们后边会有更这个合理的东西来进行这个传参,在这个read和这个参数传参最大的问题,最大的这个好处就在于它有提示,他会告诉你,请你输入数字一,请你输入数字二,哎。
08:09
各位,咱们现在虽然建的程序都是图形的,可能看起来更漂亮一点,但是本质上也一样,比如说你安装的时候,它要求你输入安装目录,那这其实就可以用锐角来完成,都是可以的,明白所以搞清楚啊,这是像脚本中传参的一种方法。它的优点是可以向脚本中传递参数,然后让它可以正常运算,缺点在于它没有任何提示,它不适合给普通用户用,他一般是作者用来自己来传菜用的,不是让这个其他人来用。好各位,这就是刀N的作用,这个还是有,虽然我说不适合给普通用户用,但是给这个这个给作者用,我们还是很常见的,还是很常见的各位,所以请大家这个一定要熟练啊,这个要会,要能看懂。再说一遍,邦德林代表的是命令,本身后面的这个数字代表的是地几个参数,那这个脚本其实基本上就能说明这个传参的作用,当然参数接收进来能做很多的事儿,比如说我可以比如说写个脚本,判断一下你写的这个文件是不光是数字啊,是文件,是普通文件还是目录,还是什么文件,我都可以写,对吧?通过你传递进来的内容来判断,然后判断完之后再执行后续的操作都是可以的。
09:25
对吧,好各位,这是位置参数变量的第一种,也是最常见的位置参数变量,大家要能看懂,要会用,OK,再提醒一句啊,虽然这个脚本非常简单。你应该照着抄,如果你有能力的话,你就可以应该照着改,比如说你再加一些,不光有加法呢,你是不是加一些减法的加减乘除呢,那怎么办?我们是不是会就变成一个加减乘除运算了,对不对,那这个我们后面会要求你们来写这样一个四则运算,当然如果你要有愿意,还可以写什么开平方啊,开方啊都可以嘛,对吧,只要把算法写清楚是不就行,对不对?
10:05
好了,各位,这节课就先到这里,我们下节课再见。
我来说两句