shell脚本--1

1.创建shell脚本文件

  shell脚本文件第一行必须指定要使用shell。格式为:#!/bin/bash。

    例如:

  在写好shell脚本之后,需要运行shell脚本。运行shell脚本时,有两种方法,第一,可以将shell脚本所在的目录添加到环境变量PATH中;第二,在命令行中使用文件的路径来引用shell脚本。

  在采用第二种方式时,需要判断是否有执行该shell文件的权限。

  

  在我的环境下,是有x权限的。如果没有的话,可以使用chmod命令来修改文件的权限。

  最后采用相对路径的方法来执行脚本文件。

  

2.显示消息

  echo 可以用来显示字符串。在显示字符串时,可以不使用引号。而如果字符串中不含有 ‘  或者 “  ,要显示的字符串可以不使用引号,否则要使用与字符串中的引号不相同的引号。

  在命令中:

  

  利用shell脚本:  

  

  其输出结果为:

  

3.使用变量

  可以在shell脚本中直接使用环境变量,需要和$一起使用。例如:echo $PATH

  也可以在shell脚本中定义自己的变量。shell脚本会自动决定变量的数值类型。同样,在使用变量时,需要和$一起使用。

  

4.反引号

  反引号是不同于 ’ ,反引号和~位于用以键位。其作用是将shell命令的输出赋给变量。

  其输出结果为

5.输入重定向

  输入重定向是将命令的输出发到一个文件当中。shell中采用 > 来完成输入重定向。

  例如:date > file 表示将date的结果输入到文件file中。如果file已经存在,则新文件覆盖旧文件。

  

  如果想在原有的文件中追加结果,则使用 >> .

  

6.输出重定向

  输出重定向是将文件的内容重定向到命令当中。shell中使用  < 来表示输出重定向。

    wc命令计算了 file 文件的行数,词数和字节数。

  另外,还可以将命令行中的内容重定向到命令当中,即内联输入重定向。用 << 来表示。

   

  上图中,<< 右边的 eof 标记了文本的开始和结尾。该标记可以是任意字符串,再比如 wc << end  .....  end ,则输出两个end之间的wc的值。

7.管道

  管道也是某个命令的结果作为另一个命令的输出,和重定向有些类似。管道用 | 来表示。

  在使用管道时,命令是同时运行的,即前一条命令产生结果的同时会立即传送给第二条命令。例如  ls -l   |  sort,即将 ls -l 第一条结果输出给sort,再将第二条结果输出给sort......,在整个过程中,是不会使用到任何中间文件或者缓冲区的。

  管道常见的使用场景是 ls -l  | more 。当一个目录中的文件比较多时,使用more命令可以强制一条一条的输出每条数据。

8.数学运算

  在shell脚本中使用数学运算可以使用方括号。

    其运行结果为

  由上图可见,第一个输出只是对变量进行了简单的替换,而第二个输出则进行了运算。

  shell中不支持浮点数运算。对于小数除法,只进行了整数计算,比如10/3的结果是3.可以利用shell中的bc计算器来进行浮点数计算。

  

  在命令行中输入bc后会进入bc计算器模式,然后就可以进行计算。scale是一个内建的可以控制浮点运算的变量。利用这个变量可以控制小数点的位数。如上图所示。

  

  上图显示了在脚本中使用bc计算器。其中变量var3就采用了bc计算器进行了浮点运算。

9.退出脚本

  shell中的每个命令都有退出状态码,可以使用$?来产看一条命令执行完成后的退出状态码,并且仅能查看上个命令的退出状态码。

    输出结果为0说明命令执行正确。

  其他的linux的退出状态码比如1(发成未知错误),2(误用shell命令),126(命令不可执行)等等。

  另外,可以返回自己的退出状态码。即可以在脚本结束时指定一个退出状态码。

     

     

  在上述脚本的结束时指定了退出状态码400,执行脚本后输出状态码时其结果为144.因为状态码的最大值为255,所以最终输出的值会是设定值除256的余数。在本例中为400除256的余数,所以为144.

原文地址:https://www.cnblogs.com/healthylife/p/6086661.html