00:00
好,那我们今天继续来学习这个share编程脚本啊,咱们上次呢,已经知道写一个简单的share编程的脚本了啊,我们可以在这个脚本里面用一些这个变量,我们上次呢讲了一些变量的类型啊,大家还记得有哪些变量类型吗?还有什么普通变量啊,还有就是环境变量,再有就是有一些这个。呃,内置的变量,内置的变量这个在系统中。是咱们,呃,Share里面自带的啊,有一些什么,比方说这个UID呀,Pass呀,PSY呀,这都是系统自带的电压内置变量。啊,另外呢,还有一些是特殊功能的变量,比方说我们上次讲的位置变量。对吧,然后DOLLAR1DOLLAR2啊,Dollar星DOLLAR2的符号,Dollar井号啊,包括还有什么DOLLAR0之类的,那这些都是系统自带的变量,它们有自己的含义啊,另外我们还讲过只读变量,对吧?诶我问大家问题啊,这个到一到二就是存放脚本的位置参数了。
01:23
那到了一到二,将来我们这些变量能不能改了它,那到了一,我后面是由脚本的第一个字符串付给他的。我能不能把到一等于我给它改一个新的值啊,能不能把它改了在脚本里面啊,注意DO1呢,它的来源是从执行脚本的命令行中来进行获取的。也就是说DO1的值是来自于脚本后面跟的参数,你不可以在脚本里面再写个DO1等于什么的,给它改了,听懂吧,哎,当然刚才陈迪说的这个Dollar a等于DOLLAR1啊,那你这个Dollar a等于DOLLAR1这个写法也不对呀,要应该要要写的话是A等于DOLLAR1是不是?哎,Dollar就不要再写了啊,A等于DOLLAR1,你可以把DO1付给A,这是可以的,但是不能再写一个DOLLAR1等于。
02:28
Dollar a或者什么别的一个字符串了,理解了吗?啊,它的值就是来自于命令行的参数。啊,这变量呢,希望大家多用,尤其局部变量的,尤其这个这个位置变量,位置变量呢,可以增强咱们脚本的功能啊,将来我们可以在脚本后面加不同的参数来实现不同的这个效果啊,那事实上咱们将来写的很多脚本,它实际上就是利用了这个功能啊,那比方说在咱们的。
03:03
S的六七这些老的系统里面有一些,他就是这么做的。你像我们这边有一个。这个network是个脚本,实际上network后面跟不同的参数,它作用就不一样啊,比方说我们可以跟上什么呢?跟上。他就执行start操作。哎,你要执行跟上restar,它就跟上restar操作,发现了吗?大家想想这个东西是不是就是一个参数付给了他。那将来它就根据你这个值,哎,比方说哎,你这个值DOLLAR1是star还是star,根据不同的值,将来他做不同的事,当然他这个肯定要将来要做个判断了,所以我们今天呢,就要学习,学习怎么去判断一个变量是什么的时候,接下来我们要做不同的操作是吧,而不是说诶你固定跟着一个什么,就只能是用做这样的一个事,我们今天会学习更加丰富的share编程的技巧。
04:15
好,那我们继续来看一下我们今天学习的内容啊,那位置变量我们已经知道了。那接下来我们还有退出状态码变量。退出状态码变量,大家在访问网站的时候,有没有见过类似的这样的页面,见过吧,就是打开浏览器是不是看到过什么403呀,什么404呀,有说什么这个什么这样的信息。见过吧,就类似的吧,啊啊,当然这种界面这个数字是什么意思啊,这个数字实际上就是根据我们访问资源的状态返回的一个数字的啊值表示发生了什么样的事。
05:03
啊,这个实际上有点像我们生活中啊,生活中有的时候也会用到类似的这种习啊方式啊,就是。不同的情况发生了,我们用一个数字来表示它,用一个标识来表示它。啊,那实际上你看我们生活中,比如说红绿灯,那红绿灯那不就是呃,状态不一样,它颜色打个灯不一样。那只不过是它的颜色就三种比较简单,那我们在实际执行脚本或者是执行某些程序的时候,因为它的状态呢,比较丰富。你光拿这个三种灯啊,你说这个。八种灯他也不够啊啊,所以我们就用数字来表示。那数字可以体现出。程序执行的状态。那同样的,在我们编写线的时候,也可以利用同样的逻辑。
06:00
就是这个脚本执行过程中。发生了不同的情况,我让它返回一个值。这个值我们要想看,我们需要从一个变量来获取,这个变量同样也是系统内置的变量,它会自动保存前一条命令的执行结果的状态。那这个状态呢,有很多种,有256种。其中零表示成功。那么非零就是一到255之间表示失败,那这个变量就是到问号,到问号我们之前好像提到过一次。大家记得吗?我在哪提到过,到了问号。是不是我们上次讲那个grape-Q的时候,这个选项,一个Q选项是干嘛,就是找到也好,找不到也好,他都不做显示,对不对,静默,那静默的话,那到底找到找不到,哎,我们就看这个到问号。
07:02
那这个到德问号,现在大家明白了啊,到问号就是保存了前一条命令的执行结果的状态。那所以你如果GR-Q找到了,那成功了吗?成功了是不是do号存的就是零吗?那如果找不着,那这个do问号存的不就是个非零的结果吗?所以我们就判断do符号的值是零,那就行了。那我就知道找到还是没找到了。那当然这个到括号它可以保存前面这条命令,那这个前前面的命令由你写啊,你想执行gra,你执行任何命令都可以,总之这个命令的执行状态自动会存放在到问号里面,那接下来我们来测试一下啊,给大家看一看。啊,比方说刚才我执行了一个AR,这不刚刚完成的吗?那这个完成了到底成功失败了我不知道啊,有人说那你看提示啊,这不有OK吗?那不是说所有命令都有那么明确的提示的啊,所以这时候我想知道成功失败,哎,那我就到了问号就好了。
08:04
是不是零是成功了对吧?哎,成功了啊,当然那很有可能会出错呀,比方说我随便补写了一个命令,这是不是就出错了,出错了,那我怎么知道错了呢?哎,127127非零,非零就错了啊,当然有说那这个错,呃,是零以外的其他值,那意味着我随便再补写一个,它也是错,你看。这个错返回的结果,只要不是零,都是错。那当然,成功只有一个。所以生活中也一样,成功的人都具有同样的品质是吧?努力奋斗,嗨,不成功的人有各种各样的原因是吧?总之是别人的原因,不是自己的原因。嗯。所以到了问号,现在就知道了,它的错误的可能性很多,可以用一到255来表示。
09:02
都是错。啊,所以将来我们判断一个命令成功失败,那现在就有了依据了,就看问号就可以了,啊,那当然我们在脚本中。咋咋写,怎么用这个东西。有我这个删了好进来,那比方说我们写一个,那如果说我们这执行一个命令。这个脚本在执行过程中。这出了个错误,就是CMD是个错误,也没这个东西啊啊,那现在我写了这样的一个简单的脚本之后,那这个脚本执行完了以后,现在请问它的值是多少。多少?竟然是零,那为什么竟然是零呢?因为LS成功了,虽然前面的命令失败了,但是LS成功了,我们说逗号是保存前一个。
10:10
那你这个C脚本里面有三个命令,那最后那个不就是LS吗?LS成功了,那他就成功了。它只保存一个。啊,所以这个地方。记住,它只保存最后一个。当然返回的值一定是零吗?那也可以人为确定,我们可以人为修改。我就不想根据最后一条命令的执行结果来保存状态,我甚至想提前退出,那么我们还可以这么干,我们可以在这儿挑个it,这写上一个零到255之间的数字,比方说这回我们100,那么我加上这个EXZ命令以后,这个EXZ命令大家之前应该见过,就是我们退出嘛,那后面跟那个数字100就表示的是我们将来把这100要存到这个到德上去。
11:05
它也就意味着它不仅退出,还保存了指定了状态值,当然这时候我们现在当然由于我这把exit写在了LS的前面,那LS是不是这个命令没有机会执行了,因为他退出了嘛,看到exit就退出,L就不执行了,那我们来跑一下看一看。哎,那现在你看LS是不是没有执行啊,那没有执行,那我们看看它的结果是什么,是不是真的就是100。所以这个返回值是可以人为去定义的。那将来我们还可以根据未来的这个条件判断,在脚本中我们可以写一些这个逻辑上的不同的处理,比方说某某某情况发生了,我给他返回一,某某另一种情况发生了,返回二。
12:02
对吧,这样的话呢,将来我们生产中,我一看这个道路的话的值1234,哎,我就知道大概发生了什么事了,它匹配了某些条件了。是吧,比方说一代表着你今天运气很好,二代表着你今天可能有不好的运气,是不是,哎,咱们可以加不同的这样的一个状态值,分别表示你不同的情况发生了,这都可以的啊。好,这是我们刚才给大家说的状态变量啊,状态变量好了,你像这个。这个就表示的是我故意的加了一个扔到垃圾箱里,所以这个页面能不能访问,是不是就看状态码就可以了,这个状态码这个号是个浏览器,那我访问完了以后,到底这个页面成功失败了,那我们就看问号就好了。
13:02
零说明我们能访问这个页面对吧,所以用这种方式是不是可以实现一些这个状态的,比方说一些这个服务的监控啊。比方说我现在有一个网站,这个网站呢,我要时不时要监控一下他的状态,如果他要不能访问了,那赶紧就解决啊,这是错误了,不影响业务,是不是赶紧采取一些措施,发个报邮件报警之类的都可以,咱们不是前面已经知道怎么发邮件了吗?如以如果哎,你定一个程序,每隔一段时间,比方说你可以定义一个男,每隔一分钟探测一下你这个网站是不是正常不正常,赶紧发邮件给你发发报警是吧,你赶紧过来解决。嗯,这样的话呢,就可以更好的来及时把故障排除。所以这些都是可以用得上的技术了,对吧?啊,当然那如果说我们这随便访问一个。带二是吧,这个二的应该是不存在的,应该是啊,当然我猜测应该是不存在的,那不存在,那我们看看它的状态呀,有吗?不应该有吧,真的有吗?这个域名真真的有啊,这个出乎的意料呢,那看看真的有吗?真的有啊,对对,他他这个是,他这个是把我这个名字给解析了,是看到没有,他补了个后缀啊,补了后缀不存在的,我这也能解析成功,那你这样做的话得了,那大大家都能解释成功了,那这个应该加个点就不行了啊啊加个点就不行了,因为这没有这个。
14:44
这个是因该没有这个域名啊,没有这个域名,这样的话呢,应该就可以了。哎,那这个是返回的,这是怎么回事啊。那说明靠命令它返回的时候,是不是并不根据你的这个成功失败,那我们来看一下它的状态啊,看一下它的状态,那如果我们直接把它,他就给你补上了呀,看看哎呀真的有,那有的话当然就成功了,看到没真的有,那你胡写一个东西,那看来我这个配置有有有点问题啊,那这个原因就是因为在这加了一个这样的东西,把它删了,删了吧,要不他老给你补,对老给你对,这回再写一个。
15:33
就会再写一个,你看他访问的都是我这个网站。是不是总是防护这个网站,这个就是自动的做,做了一个所谓的这个域名补助股权啊,股全你你随便写一个,比方说ABC或者不存在的一个东西啊,你看看他有没有补,如果补上了。
16:01
你看哎呀,这么长的竟然也有啊,这这也有IP,也有IP也有IP,你们有没有。啊,你们可以测一下,因为我这个环境是做过修改的。嗯。访问一个不存在的域名啊,比方说不存在的有呃页面吧,是吧,不存在页面可以吧。页面的话呢,如果不存在,它也会返回一个结果,但是这个返回的结果或许并不是你想象那样,如果不存在,他认为只是不存在,并不会返回错误,那比方说我们现在通过浏览器啊,去打开一个网站,这个网站这个页面我随便写一个。啊,就阿里云这个吧,随便写一个这样的一个页面。
17:07
你看这个页面它是不是显示不存在啊,但是不存在是不存在,但是如果你用浏览器访问块的话,他认为这是成功失败啊。啊,这是成功还失败啊,你看看就知道了,见没有页面虽然不存在,但是人家那服务是可以访问的,所以他认为这是正常的啊。所以更加准确的还要看什么呢?看这个页面里面得到的资源的结果。那么不过呢,我们在。
我来说两句