shell基本结构

 1.命令与参数

shell的基本功能是执行命令,这一点在用shell用来进行交互时可以得到充分的证明。你一次输入一个命令,shell就执行他们。就像下面的这个例子:

$ cd work ; ls -l whizprog.c

-rw-r--r--    1 tolstoy   devel       30252 Jul  9 22:52 whizprog.c
这个例子表现出了unix shell行的最基本的东西,首先,格式相当简单,用空格来分割shell行中不同的组件。

其次命令的名字是该shell行中的第一个项,最为典型的是选项紧随其后,紧接着就是的参数,没有下面奇怪的语法:COMMAND=CD,ARG=WORK

COMMAND=LISTFILES,MODE=LONG,ARG=WHIZPROG.C

最后选项由破折号开始,由单个字符构成,选项是可选的并且可能需要一个参数。选项可以组合,例如ls -lt 或者是ls -l -t

多个选项正日益普遍,特别是在GNU各种标准组件中。

$ cd whizprog-1.1

$ patch --verbose --backup -p1 < /tmp/whizprog-1.1-1.2-patch


 

多个选项是否以单个破折号或两个破折号开始要取决于解释器。上面的例子中的 < /tmp/whizprog-1.1-1.2-patch 是IO重定向,该命令的功能是patch命令去读取文件 /tmp/whizprog-1.1-1.2-patch ,而不是从键盘读取。

最后分号来分割同一行中的多个命令,shell顺序地执行他们。如果你使用&而不是分号,那么shell就会在后台处理该命令,这就意味着shell不会等到该命令结束后去执行下个命令。

 

shell能识别三种功能性的命令:内置命令,shell函数和外部命令。

    内置命令仅仅是shell自己执行的命令,有些命令从必要性考虑被内置了,例如cd--改变目录,read --从用户或者一个文件得到输入赋给shell变量,其他命令被内置是因为考虑到效率,最为典型的是test命令,它在shell脚本和IO命令中广泛使用。

    shell函数是自包用shell语言编写的代码,它和命令一样方式被调用。

    外部命令是通过创建单独的进程由shell运行,其基本的步骤是:

1创建一个新进程,该进程以shell的副本开始

2在新进程中,搜索在路径变量中列出的目录,当命令名字包含一个斜线时,路径搜索跳过。

3在新进程中,通过用新的程序取代正在运行的shell程序来执行发现的程序。

4当程序结束时,原来shell继续从终端读入下一条命令,或者运行脚本里的下一条命令。

这点有点像中断的特点。这是基本的处理流程,让然shell可以为你做许多其他的事情,例如变量,通配符,命令和算术替代等等。

2.变量

    变量是你给某个特定信息的名字,例如first_name或driver_lic_no。所有的编程语言都有变量,并且shell没有异常。每一个变量都有一个值那shell来说,变量可以,并且通常可以为空,即意味着它不包含任何字符,这是合法的,常见的,并且非常有用。空值指引null。shell变量名字以字母或者下划线开始,可以包含多个数字,没有任何字符数字的限制,shell变量指引字符串值。

$ myvar=this_is_a_long_string_that_does_not_mean_much        Assign a value

$ echo $myvar                                                Print the value

this_is_a_long_string_that_does_not_mean_much
正如你所看到的,变量使用=符号赋值,值没有空格。shell变量值可以通过$加变量名字来取回。
当给一个变量分配一个包含空格的字符串时,使用引号
first=isaac  middle=bashevis  last=singer    Multiple assignments allowed on one line

fullname="isaac bashevis singer"             Use quotes for whitespace in value

oldname=$fullname                            Quotes not needed to preserve spaces in value
双引号在连接两个变量值时,是必须的
fullname="$first $middle $last"              Double quotes required here
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值