[Linux]-Shell编程与规范

1.脚本文件

  Shell脚本一般以.sh为后缀名.但注意在Linux中.sh不是作为文件类型识别的依据,仅仅只是用来向看到的人标记这是一个Shell脚本而已.

  Shell脚本一般有一个头声明 #!/bin/bash  告诉Linux应该用什么来执行脚本,如果没有,Linux默认将使用bash来执行脚本

2.脚本的执行方式

  source  [文件名]

  .  [文件名]

  ./  [文件名]  (注意这种方式文件需要有执行权限)

  bash/dash/sh    [文件名]

3.管道符

  管道符 | :将上一个命令的执行结果作为下一个命令的参数传入.这是一个非常有用的使用

  一个使用率非常的高的语句 ps *** | grep 'xxxx' 就是一个管道符的最好例子. 这句话的本意是 执行ps **** ,并在返回结果再执行过滤 'xxxx'

4.重定向

  Linux标准是由输入设备(键盘)获取输入,将结果输出到输出设备(屏幕).重定向就是这个输入输出的转向

  4.1 标准重定向

    输入重定向

      < 输入重定向

      例 wc < file 对file文件的内容进行单词计数.

    输出重定向

      >输出重定向(以覆盖方式)  >>输出重定向(以追加方式)   

      例: ls > file 将ls的执行结果放入file文件中(ls的输出本来是屏幕,输出重定向到文件)

    &> 混合输出

  4.2 签入文档重定向

    <<delimiter delimiter   将delimiter之间的内容作为输入传入给前面的命令

    例:$wc -l << EOF

      xxx

     EOF

  4.3 黑洞重定向

    command /dev/null

    /dev/null是Linux定义的一个特殊的存在.所有向它写入的东西将全部消失,所有向它读取的东西将什么也读不到,所以称之为黑洞.

5.变量

  5.1 自定义变量

    5.1.1 变量的声明

      shell中变量区分大小写,可以以字母或者下划线开头.规范是系统变量全大写,自定义变量纯小写,以下划线分割

      注意:shell中定义变量temp=1,=前后不能有空格.

    5.1.2 变量的作用范围(局部&全局)

      export 声明: export是将声明的变量由局部变量升级为全局变量.默认情况下声明的变量只会在当前运行的shell环境有效,export后变量可以再进入新的shell环境后依然有效

  5.2 预定义变量

    由bash预先定义的一些特殊变量,可以直接使用但不能修改

      $$ 当前脚本执行的进程ID

      $0 当前脚本的文件名

      $n(1-9) 执行脚本传入的第n个参数    

      $# 执行脚本传入的参数的格式

      $*  执行脚本传入的所有参数 当被双引号包裹时,$*将所有参数作为一个整体输出 " a b c d"

      $@ 执行脚本传入的所有参数 当被双引号包裹时,$@将所有参数分开作为个体输出  "a" "b" "c" "d"

      $? 上个命令的退出状态或者函数执行的返回值

  5.3 变量的数学运算

    变量的数学计算不能直接使用. A+B在shell中的含义是A和B两个作为字符串拼接.

    数学计算需要使用 expr 关键字

      expr [变量] [运算符]  [变量2]   <=注意,运算符的前后必须有空格

      例子: c=`expr $x + $y` 

  

猜你喜欢

转载自www.cnblogs.com/NightPxy/p/9188226.html