1.语言分类:
1.1.静态语言:编译型语言
强类型:变量在使用前,必须事先声明,甚至还需要初始化;
编写的程序事先转换成可执行格式
代表有:C、C++、JAVA、C#
动态语言:解释型语言
弱类型:变量用时声明,甚至不区分类型;
编写的程序边解释边执行
代表有: PHP、SHELL、python、perl
1.2.面向过程编程语言:代表有 Shell, C
1.3.面向对象编程语言: 代表有 JAVA, Python, perl, C++
结论:shell属于弱类型编程语言
2.shell编程各变量名称解释
变量:其实是内存空间,即叫命名内存空间
而内存:是编址的存储单元
变量类型:事先确定数据的存储格式和长度,有如下分类:
字符
数值:分整型和浮点型
布尔值:真、假
逻辑运算:与、或、非、异或
3.bash变量类型:
本地变量:set VARNAME=VALUE: 作用域为当前shell进程;
局部变量:local VARNAME=VALUE:作用域为当前代码段;
环境变量:作用域为当前shell进程及其子进程;
第一种表法方法:export VARNAME=VALUE
第二种表法方法:VARNAME=VALUE && export VARNAME
位置变量:$1, $2, ...表示返回参数的值
特殊变量:$?: 上一个命令的执行状态返回值;
程序执行,可能有两类返回值:
(1):程序执行结果
(2):程序状态返回代码(0-255)
0: 为正确执行
1-255:为错误执行,1,2,127系统预留;
引用变量:${VARNAME},括号有时可省略
撤消变量:unset VARNAME
查看当shell中变量:set 含环境和本地变量
查看当前shell中的环境变量有以下3个命令:
printenv env export
4.脚本:按需将一大堆简单小命令,结合流程控制机制实现复杂的源程序
shebang: magic number
注意:(1)脚本在执行时会启动一个子shell进程,命令行中启动的脚本会继承当前shell环境变量;
(2)系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量;
编码脚本基本格式如下:
#!/bin/bash
# 注释行,不执行
5.1 举例说明写一个如下创建用户脚本,完成以下任务:
1、添加user1用户,增加密码完成后不显示passwd命令所有输出信息
2、每个用户添加完成后,最好显示用户已经成功添加的提示信息;
5.1.1:vim useradd.sh 创建一个脚本文件:添加内容如下
#!/bin/bash
USERNAME=user1
useradd $USERNAME
echo "$USERNAME" | passwd --stdin $USERNAME &> /dev/null
echo "Add $USERNAME sucessfully"
5.1.2:保存useradd.sh文件后
chmod a+x useradd.sh 增加执行权限
./useradd.sh 执行脚本创建用户
5.2 举例说明写一个如下删除用户脚本,完成以下任务:
1、删除user1用户,并且删除其家目录,不要显示输出结果;
2、用户删除成功后,最好显示用户已经成功删除的提示信息;
5.2.1:vim userdel.sh 创建一个脚本文件:添加内容如下
#!/bin/bash
USERNAME=user1
userdel -r $USERNAME &> /dev/null
echo "del user $USERNAME successfully"
5.2.2:保存userdel.sh文件后
chmod a+x userdel.sh 增加执行权限
./userdel.sh 执行脚本删除用户