shell脚本:
脚本语言:
不需编译,由解释器解释执行;
弱类型:变量类型
变量通常不需要事先声明
编译语言 (gcc: GNU C Complier)
事先编译(源程序-->目标代码-->链接-->执行);运行时不再依赖于编译器;
强类型
变量需要事先声明
脚本语言:bash, python, perl, ruby
bash:面向过程
变量类型:
本地变量
set VAR_NAME=value
unset VAR_NAME
${VAR_NAME}
作用范围:当前shell进程;
局部变量
local VAR_NAME=value
unset VAR_NAME
${VAR_NAME}
作用范围:在当前shell进程的局部范围内有效;
环境变量
export VAR_NAME=value
unset VAR_NAME
${VAR_NAME}
使用范围:当前shell及其子shell;
位置变量:$1, $2, ...
特殊变量:$$, $?, $#, $@, ...
bash脚本:
# bash /path/to/script_file.sh
独立执行:
1、要有执行权限;
2、定义好shebang, 即脚本的第一行:#!/path/to/explainer,例如:/bin/bash, /usr/bin/python
/root/a.sh
# /root/a.sh: 所有命令都会到PATH环境变量所定义的路径下去查找;
# export PATH=$PATH:/root
bash的配置文件
profile类:/etc/profile, /etc/profile.d/*.sh, ~/.bash_profile
声明环境变量
执行程序或脚本
bashrc类:/etc/bashrc, ~/.bashrc
定义本地变量
定义命令别名
user1, user2, user3
密码同用户名
脚本文件中,所有以#开头的行均为注释行,不会被执行;
检查脚本的语法错误,不执行脚本:
bash -n /path/to/script_file.sh
调试执行脚本:
bash -x /path/to/script_file.sh
变量名称:
只能包含字母、数字和下划线
不能以数字开头
严格区分大小写
要做到见名知义
命名规范,风格统一
面向过程的编译语言,语言控制结构:
顺序执行:默认法则,逐条执行各语句
选择执行:条件判断,只有部分是符合条件,只执行符合条件的部分;
布尔测试:真,假;
0:真
1-255:假
循环执行:将同一段代码反复执行n次;循环必须要有退出条件,否则,就成为了死循环;
控制语句:
bash循环控制语句:
for
while
until