shell脚本:包含一些命令或声明,并符合一定格式的文本文件
格式要求:首行shebang机制
1 |
#!/bin/bash |
shell脚本的用途有
- 自动化常用命令
- 执行系统管理和故障排除
- 创建简单的应用程序
- 处理文本或文件
脚本规范
脚本代码开头约定
- 第一行一般为调用使用的语言
- 程序名,避免更改文件名为无法找到正确的文件
- 版本号
- 更改后的时间
- 作者相关信息
- 该程序的作用,及注意事项
- 最后是各版本的更新简要说明
脚本的基本结构
#!SHEBANG
CONFIGURATION_VARIABLES
FUNCTION_DEFINITIONS
MAIN_CODE
脚本调试
检查脚本中的语法错误
bash -n /path/to/some_script
调试执行
bash -x /path/to/some_script
变量
变量命名规则
- 变量名是由字母,数字,下划线组成,并且不能以数字开头
- 变量名区分大小写
- 不能使用程序中的关键字,例如if,for
- 做到见名知义
- 统一命名规范
变量作用
- 数据存储格式
- 参与的运算
- 表示的数据范围
变量存储类型
字符
数值:整数
弱类型语言在运行时会因是做数据类型转换。无需指定类型,默认均为字符型,参与运算会自动进行隐式类型转换;变量无须事先定义即可直接调用。
bash 是一种弱类型语言,但不支持浮点数,类似语言还有如 php,javascript
注意事项
- 变量名与等号之间,等号与变量值之间不要有空格
- 只有在引用变量的时候,才在变量名之前加$,其他情况,比如删除、赋值、循环迭代都不用加$
- 如果一行只有一条命令,则每一行不用以分号结尾,每一条命令以换行分隔
- 如果一行有多条命令,则每一条命令以分号分隔,但建议每行只有一条命令
bash中变量的种类
- 环境(全局)变量:生效范围为shell进程及其子进程
- 局部变量:生效范围为当前shell进程,对当前shell进程之外的其他shell进程,包括当前shell进程的子进程均无效
- 本地变量:生效范围为当前shell进程中函数内部
- 位置变量:$1,$2,…来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数
- 特殊变量:$?,$0,$*,[email protected],$#,$$
环境变量
变量声明和赋值:
export name=VALUE
declare -x name=VALUE
变量引用:$name, ${name}
显示所有环境变量:
- env
- printenv
- export
- declare -x
删除变量:unset name
局部变量
变量赋值:
name='VALUE'
- 直接是字符串:name=”root”
- 变量引用:name=”$USER”
- 命令引用:name=
COMMAND
,name=$(COMMAND)
变量引用:
${name},$name
“”:弱引用,其中的变量引用会被替换为变量值
‘’:强引用,其中的变量引用不会被替换为变量值,而保持原字符串
显示已定义的所有变量:set
删除变量:unset name
近期评论