shell脚本编程基础

shell脚本:包含一些命令或声明,并符合一定格式的文本文件

格式要求:首行shebang机制

1
2
3
#!/bin/bash
#!/usr/bin/python
#!/usr/bin/perl

shell脚本的用途有

  • 自动化常用命令
  • 执行系统管理和故障排除
  • 创建简单的应用程序
  • 处理文本或文件

脚本规范

脚本代码开头约定

  1. 第一行一般为调用使用的语言
  2. 程序名,避免更改文件名为无法找到正确的文件
  3. 版本号
  4. 更改后的时间
  5. 作者相关信息
  6. 该程序的作用,及注意事项
  7. 最后是各版本的更新简要说明

脚本的基本结构

#!SHEBANG
CONFIGURATION_VARIABLES
FUNCTION_DEFINITIONS
MAIN_CODE

脚本调试

检查脚本中的语法错误

bash -n /path/to/some_script

调试执行

bash -x /path/to/some_script

变量

变量命名规则

  1. 变量名是由字母,数字,下划线组成,并且不能以数字开头
  2. 变量名区分大小写
  3. 不能使用程序中的关键字,例如if,for
  4. 做到见名知义
  5. 统一命名规范

变量作用

  • 数据存储格式
  • 参与的运算
  • 表示的数据范围

变量存储类型

字符
数值:整数

弱类型语言在运行时会因是做数据类型转换。无需指定类型,默认均为字符型,参与运算会自动进行隐式类型转换;变量无须事先定义即可直接调用。

bash 是一种弱类型语言,但不支持浮点数,类似语言还有如 php,javascript

注意事项

  • 变量名与等号之间,等号与变量值之间不要有空格
  • 只有在引用变量的时候,才在变量名之前加$,其他情况,比如删除、赋值、循环迭代都不用加$
  • 如果一行只有一条命令,则每一行不用以分号结尾,每一条命令以换行分隔
  • 如果一行有多条命令,则每一条命令以分号分隔,但建议每行只有一条命令

bash中变量的种类

环境变量

变量声明和赋值:

export name=VALUE
declare -x name=VALUE

变量引用:$name, ${name}

显示所有环境变量:

  • env
  • printenv
  • export
  • declare -x

删除变量:
unset name

局部变量

变量赋值:

name='VALUE'

  1. 直接是字符串:name=”root”
  2. 变量引用:name=”$USER”
  3. 命令引用:name=COMMAND,name=$(COMMAND)

变量引用:

${name},$name

“”:弱引用,其中的变量引用会被替换为变量值
‘’:强引用,其中的变量引用不会被替换为变量值,而保持原字符串

显示已定义的所有变量:set

删除变量:unset name