第六天:shell脚本编程基础格式规范及变量

发布时间 2024-01-12 20:34:01作者: djyhello

一、脚本基本格式

 1、首行为一些命令或声明

  #!/bin/bash

  #!/usr/bin/python

  #!/usr/bin/perl

  #!/usr/bin/ruby

  #!/usr/bin/lua

2、脚本注释规范

  第一行一般为调用

  程序名

  版本号

  更改后的时间

  作者相关信息

  该程序的作用

  简要说明

3、SHELL脚本调试

  bash  -n  /path/to/some-script  : 只检测脚本中的语法错误,但无 法检查出命令错误,但不真正执行脚本

  bash  -x  /path/to/some_script  :调试并执行

  直接加执行权限运行:chmod +x   

  直接执行网上的脚本:   curl    http:\\sdss     2>/dev/null  | bash 

三、变量

 1、变量类型

  内置变量:PS1,PATH,  UID    HOSTNAME  $$  BASHPID  PPID  $?  HISTSIZE

2、变量数据类型:

  字符  

  数值:整型、浮点型,bash不支持浮点数

3、变量全名法则

  区分大小写、不能使用程序中的保留字和内置变量,如:if ,for;   

  只能使用数字、字母及下划线,且不能以数字开头,

4、变量定义

  普通变量:生效范围为当前SHELL进程,对当前SHELL之外的其它SHELL进程,均无效

  环境变量:生效范围为当前SHELL进程及其子进程

  本地变量:生效范围为当前SHELL进程中某代码片断,通用指函数

  变量赋值:name='value',,,赋值为临时生产,退出后变量自动删除;脚本中的变量会随着脚本结束而删除

      直接字串:name='root'

      变量引用:name="$USER"

      命令引用:name=`COMMAND`   或者  name=$(COMMAND)

5、引用 

  弱引用:"$name"  其中的变量引用会被替换为变量值

  强引用:'$name'  其中的变更引用不会被替换为变量值,而保持原字符串

  追加:NAME  +=:DJY

6、变量显示和删除

  set  显示所有变量

  unset <name>  删除变量

7、环境变量

  可以使子进程,继承父进程的变量,但是无法让父进程使用子进程的变量

  一旦子进程修改从父进程继承的变量,将会新的值传递给孙子进程

  一般只在系统配置文件中使用,在脚本中较少使用

  显示所有环境变量:env    printenv    export     declare   -x

8、bash内建的 环境变量

  PATH   SHELL  USER   UID   HOME   PWD   SHLVL   LANG   MAIL   HOSTNAME    HISTSIZE  

9、只读变量

   readonly name         declare   -r name 

10、位置变量

  在bash  shell中内置的变量,在脚本代码中调用通过命令行传递给脚本的参数

  

  

  清空所有位置变量:set  --

11、退出状态码变量:   $ ?  取值范围 0-255

  $?的值为0       代表成功

  ?的值为1-255    代表失败

  自定义退出状态码:  exit  [n]

12、展开命令行

  

 

  

  13、脚本安全和SET

  set命令:可以用来定制shell环境

  

    

四、格式化输出  printf  

   .

  

 1、常用格式替换符

  

   

 2、常用转义字符