第六天:shell脚本编程基础格式规范及变量
一、脚本基本格式
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、常用转义字符