下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

简单解读Shell编程的Shell基本语法

作者:课课家     来源: http://www.kokojia.com点击数:1205发布时间: 2019-02-28 10:47:37

标签: 考试认证Linux认证Linux

软考,您想通过吗?一次通过才是硬道理

  我们制动shell编程是作为学习Linux中必不可少的一环,而要学好shell编程我们得要首先了解其shell的基本语法。那么到底shell的基本语法是怎样的呢?在本文中课课家笔者就为大家详细介绍shell的基本语法,让学习Linux的大伙们对此有一个比较清晰的认识。

shell基本语法

  shell除了具备命令语言互动式地解释和执行用户输入的命令的功能以外,它还可以用来进行程序设计,这主要归根于它提供了定义变量和参数的手段,以及丰富的程序控制结构。使用Shell编程我们可以比喻成DOS中的批处理文件,我们把它称之为shell script,又或者称作Shell程序或Shell命令文件。和其他高级程序设计语言一样,Shell也提供说明和使用变量的功能。对于Shell来讲,所有变量的取值都是一个字串,Shell程序采用$var的形式来引用名为var的变量的值。一般来说Shell有以下几种基本类型的变量:


 

  Shell定义的环境变量

  一般来说Shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,当然我们还可以重新定义这些变量。常用的Shell环境变量有:

  HOME 表示用于保存注册目录的完全路径名。

  PATH 表示用于保存用冒号分隔的目录路径名。Shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行。

  TERM 表示终端的类型。

  UID 表示当前用户的识别字。取值是由数位构成的字串。

  PWD 表示当前工作目录的绝对路径名。该变量的取值随cd命令的使用而变化。

  PS1 表示主提示符。在特权用户下默认的主提示符是#;在普通用户下默认的主提示符是$

  PS2 表示在Shell接收用户输入命令的过程中,如果用户在输入行的末尾输入“\\”然后回车又或者当用户按回车键时Shell判断出用户输入的命令没有结束时,就显示这个辅助提示符。其作用是用来提示用户继续输入命令的其余部分,默认的辅助提示符是>


 

  用户定义的变量

  所谓用户定义的变量就是作为用户的我们可以按照下面的语法规则来定义自己的变量,其格式为:

  变量名=变量值

  需要我们注意的一点是在我们进行定义变量时,变量名前不应加符号$,而在引用变量的内容时则应在变量名前加$;在给变量赋值时等号两边一定不能留空格,如果变量中本身就包含了空格则整个字串都要用双引号括起来。我们在编写Shell程序时为了使变量名和命令名相区别,笔者建议大家在编写时将所有的变量名都用大写字母来表示。另外当我们想要在说明一个变量并对它设置为一个特定值后就不在改变它的值时,我们可以用下面的命令来保证一个变量的只读性:

  readonly 变量名

  由于在任何时候创建的变量都只是当前Shell的局部变量,所以不能被Shell运行的其他命令或Shell程序所利用,而export命令可以将一个局部变量提供给Shell执行的其他命令使用,其格式为:

  export 变量名

  当然我们也可以在给变量赋值的同时使用export命令:

  export 变量名=变量值

  使用export说明的变量,在Shell以后运行的所有命令或程序中我们都可以访问到。


 

  位置参数

  所谓位置参数其实就是一种在调用Shell程序的命令行中按照各自的位置决定的变量,是在程序名之后输入的参数。通常位置参数之间用空格分隔,Shell取第一个位置参数替换程序文件中的$1,第二个替换$2,以此类推。由于$0是一个特殊的变量,它的内容是当前这个Shell程序的文件名,所以$0不是一个位置参数,一般来说在显示当前所有的位置参数时是不包括$0的。


 

  预定义变量

  事实上预定义变量和环境变量相类似,它也是在Shell一开始时就定义了的变量。当然有所不同的是作为用户的我们只能根据Shell的定义来使用这些变量而不能重定义它。所有预定义变量都是由$符和另一个符号组成的,常用的Shell预定义变量有:

  $# 表示位置参数的数量。

  $* 表示所有位置参数的内容。

  $? 表示命令执行后返回的状态。

  $$ 表示当前进程的进程号。

  $! 表示后台运行的最后一个进程号。

  $0 表示当前执行的进程名。

  在这其中$?用于检查上一个命令执行是否正确。(要知道在Linux中命令退出状态为0表示该命令正确执行,任何非0值表示命令出错。)

  另外$$变量最常见的用途是用做暂存文件的名字以保证暂存文件不会重复。


 

  参数置换的变量

  Shell提供了参数置换功能以便作为用户的我们可以根据不同的条件来给变量赋不同的值。一般来说参数置换的变量有4种,而这些变量通常与某一个位置参数相联系,根据指定的位置参数是否已经设置类决定变量的取值。它们的语法和功能分别如下:

  a. 变量=${参数-word}: 表示如果设置了参数则用参数的值置换变量的值,否则用word置换。换句话说就是这种变量的值等于某一个参数的值,如果该参数没有设置则变量就等于word的值。

  b. 变量=${参数=word}: 表示如果设置了参数则用参数的值置换变量的值,否则把变量设置成word,然后再用word替换参数的值。此时需要大家注意的地方是位置参数不能用于这种方式,因为在Shell程序中不能为位置参数赋值。

  c. 变量=${参数?word}: 表示如果设置了参数则用参数的值置换变量的值,否则就显示word并从Shell中退出,如果省略了word则显示标准信息。这种变量要求一定等于某一个参数的值。如果该参数没有设置就显示一个信息,然后退出。所以这种方式常用于出错指示。

  d. 变量=${参数+word}: 表示如果设置了参数则用word置换变量,否则不进行置换。

  以上这四种形式中的“参数”不仅可以是位置参数,还可以是另一个变量,只是用位置参数的情况比较多。


 

  以上就是shell编程中shell的基本语法的介绍。

  本次的简单解读Shell编程的Shell基本语法的讲解到此就暂告一段落,如果以后有什么相关的内容继续进行补充或者修改的话,笔者会在此继续进行相关的内容的补充或者修改的工作,同时也欢迎大家对本次的讲解提出自己的建议和补充。最后笔者希望本次的讲解对大家学习Linux和Linux认证能够起到一定的帮助作用!

赞(0)
踩(0)
分享到:
推荐查看
华为认证网络工程师 HCIE直播课视频教程