shell脚本编程之变量

一、创建shell脚本文件

  创建shell脚本时,必须在第一行指定要使用的shell。格式为:

  #!/bin/bash

  通常在shell脚本中,#代表注释行,即不被执行的行,而第一行“#!”则是表示用哪个shell来执行脚本。

  实例:

1.jpg

  让我们来执行一下这个脚本:

2.jpg

  上面的结果显示无法找到此命令,其原因是shell对于命令的查找是通过PATH变量来进行的,如下图所示,而新建的脚本的目录并不在PATH变量中,解决方法:

  1、将shell脚本的目录添加到PATH变量中;

  2、将脚本复制到PATH变量中存在的目录中;

  3、使用绝对或相对路径来执行脚本。

3.jpg

  我们使用第三个方法来执行脚本:

4.jpg

  结果又出现了报错,提示没有权限;如果需要运行脚本的话,此脚本必须拥有执行权限,而从下图可以看到,此文件没有任何的执行权限:

5.jpg

  添加执行权限后再次执行脚本:

6.jpg

  上面的结果中显示脚本成功运行。

二、变量

  变量的类型包括:环境变量、本地变量(局部变量)、位置变量、特殊变量。

  1、环境变量

    可以使用set命令来查看当前活运的环境变量。

    在脚本中引用环境变量时要在变量名称前加一个“$”符号。

7.jpg

  2、本地变量

    即本地变量,其命名规则如下:

     (1)只能包含字母语、数字和下划线,并且不能以数字开头

     (2)不应该跟系统中已有的环境变量重名

     (3)最好做到见名知义

7.jpg

    上面的例子中将两个变量分别赋值后进行计算,并输出计算的结果。

  3、位置变量

           $#:#为数字,表示参数的位置;如:$1表示脚本执行时所带的第一个参数。

5.jpg

           如上例所示,脚本执行时带了两个参数9和10,分别对应$1和$2两个变量,而$0对应的./test4,即命令本身。

           shift n命令可以对参数进行位移,使后面的位置变量向前移动n个位置,如果不带具体的数字默认为1。

6.jpg

  4、特殊变量

    $?:用于显示命令执行后返回的状态码,命令执行成功则返回1,否则为其它值;

8.jpg

          $#:命令执行时所带的参数的个数;

9.jpg

          $*:参数列表,将所有参数当做一个参数,而不是多个对象;

          $@:参数列表,将所有参数当做多个独立的对象。

10.jpg

            上例中的结果两个变量并没有什么区别,得到的结果是相同的。

            下面的例子可以看出两个变量的不同之处:

11.jpg

三、测试脚本

  脚本执行时出现错误时,可以使用bash命令协助进行错误排除,其命令格式如下:

   bash [options] script

   常用的选项:

     -n:检查脚本的语法错误,且只显示语法出错的内容;

     -x:检查脚本的语法错误,且显示脚本执行的每一步内容。

1.jpg

 

原创文章,作者:petmaster,如若转载,请注明出处:http://www.178linux.com/10658

(0)
petmasterpetmaster
上一篇 2016-02-14 10:00
下一篇 2016-02-14 10:01

相关推荐

  • 实现CA和证书申请,

    接下来讲的是在centos7.3和centos6.8中实现CA和证书申请,centos7.3作为主机,centos6.8作为客户端 首先你授权客户端CA证书,必须本身主机也具有CA,自己证明自己,先CA自签证书,然后在7.3创建私钥 为了方便以后的操作CD进入 cd /etc/pki/CA   生成自签名证书 -new:  生成…

    2017-04-11
  • 第四周作业

    作业 1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@cloud ~]# cp -R /etc/skel /home/tuser1 && chmod -R…

    Linux干货 2016-12-25
  • GlusterFS测试报告-01

    一、GlusterFS基础环境的介绍 1、关于GlusterFS文件系统和架构的介绍 http://jingyan.baidu.com/article/046a7b3ef65250f9c27fa9d9.html 2、实验的目的 a. 利用多台性能较低并且老旧的服务器,实现企业的云盘功能 b. GlusterFS服务端和客户端的部署和配置 c. 实现Glust…

    Linux干货 2016-07-22
  • bash脚本入门之变量、运算、条件测试

    概述     脚本编程能力是作为运维工程师不可或缺的一项基本技能,各种系统的运维,如果完全靠命令行一条一条命令来执行,工作效率可想而知,而脚本却可以将完成一定功能的各个命令依据一定的流程控制,逻辑判断去完成某种功能,提升工作效率。本章就简单介绍一些linux下的bash脚本编程的基础入门知识,具体内容分为以下几个方面:…

    Linux干货 2016-08-12
  • 用户及组概念和管理

    用户和组概念 /etc/passwd文件字段含义 root:x:0:0:root:/root:/bin/bash 用户名:登陆名,具有唯一性 密码存放加密用户的密码,看到的是一个x,其实已经映射到/etc/shadow文件中 UID:用户ID GID:组群ID 用户名全称:可以不设置 主目录:用户登陆系统中首先进入的目录 登陆Shell:用户使用shell类…

    Linux干货 2016-11-04
  • 26期全程班-第五周博客作业

      1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; # grep “^[[:space:]]\+” /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; # grep “^…

    Linux干货 2017-03-09