嗯,这次轻松一下,不讲太多... ^_^先说一下,为何要用 () 或者 {} 好了。许多时候,我们在 shell 操作上,需要在 一定的条件下执行多个命令,也就是说, 要么不执行,要么就全执行,而不是每次 依序的判断是否要执行下一个命令。或者,要从一些命令执行的先后次序中得到结果, 如算术运算的 2*(3+4) 那样...这时候,我们就可以引入 "命令群组"
这个题目说穿了,就是要探讨Wildcard与Regular Expression的差别的。这也是很多初学shell的朋友很容易混淆的地方。首先,让我们回到十三问之第2问,再一次将我们提到的command line format 温习一次:command_name options arguments同时,也再来理解一下,我在第5章所提到的变量替换的特性:先替换,再重组 command line!
好不容易,进入了两位数的章节了... 一路走来,很辛苦吧?也很快乐吧? ^_^在解答本章题目之前,先让我们了解一个概念: return value。我们在 shell 下跑的每一个 command 或 function, 在结束的时候都会传回父进程一个值,称为 return value。在 shell command line 中可用$?, 这个变量得到最 "新" 的一个return value, 也就是刚刚结束的那个进程传回的值。
我们上一章介绍了()与{}的不同,这次让我们扩展一下,看看更多的变化:$()与${}又是啥玩意儿呢?在bash shell中, $()与``(反引号)都是用来做命令替换(command substitution)的。所谓的命令替换与我们第五章学过的变量替换差不多,都是用来重组命令行:完成 `` 或者$()里面的命令,将其结果替换出来,再重组命令行。
Part-II Regular Expression (正则表达式)接下来的Regular Expression(RE) 可是个大题目,要讲的很多。我这里当然不可能讲得很全。只希望能带给大家一个基本的入门概念,就很足够了...先来考一下英文好了:What is expression?简单来说,就是"表达",也就是人们在沟通的时候所要陈述的内容。
终于,来到了shell十三问的最后一问了... 长长吐一口气~~~~最后要介绍的是shell script设计中常见的循环(loop).所谓的loop就是script中的一段在一定条件下反复执行的代码。bash shell中常用的loop有如下三种:forwhileuntilfor loopfor loop 是从一个清单列表中读进变量的值,并依次的循环执行do到done之间的命令行。
这次让我们从 CU shell 版的一个实例帖子来谈起吧: (论坛改版后,原链接已经失效)例中的提问原文如下:帖子提问:cd /etc/aa/bb/cc 可以执行 但是把这条命令放入 shell 脚本后,shell 脚本不执行! 这是什么原因?意思是:运行 shell 脚本,并没有移动到 / etc/aa/bb/cc 目录。我当时如何回答暂时别去深究,先让我们了解一下进程 (process) 的概念好了。
这次让我们暂时丢开command line,先了解一下bash变量(variable)吧...所谓的变量,就是利用一个固定的"名称"(name),来存取一段可以变化的"值"(value)。变量设定(set)在bash中, 你可以用"="
还是回到我们的command line来吧...经过前面两章的学习,应该很清楚当你在shell prompt后面敲打键盘, 直到按下Enter键的时候,你输入的文字就是command line了, 然后shell才会以进程的方式执行你所交给它的命令。 但是,你又可知道:你在command line中输入的每一个文字, 对shell来说,是有类别之分的呢?
关注时代Java