一、BASH 概念介绍
Bash(GNU Bourne-Again Shell )是许多Linux发行版的默认shell。事实上,还有许多传统UNIX上用的Shell,例如tcsh,csh,ash,bsh,ksh等等,Shell Script大致都类同,当您学会一种shell以后,其他shell就会很快上手。
bash的命令语法是Bourne shell命令语法的超集。数量庞大的Bourne shell脚本大多不经修改即可以在bash中执行,只有使用了Bourne的特殊变量或内置命令的脚本才需要修改。 bash的命令语法很多来自Korn shell (ksh) 和 C shell (csh), 例如命令行编辑,命令历史,目录栈,$RANDOM 和 $PPID 变量,以及POSIX的命令置换语法: $(...)。作为一个交互式的shell,按下TAB键即可自动补全已部分输入的程序名、文件名、变量名等等。
shell具有编程能力。叫做脚本语言。
1、编程语言
编程语言主要分为:机器语言、汇编语言、高级语言
静态语言:编译型语言
强类型(变量)
事先转换成可执行格式
C 、 C++ 、JAVA 、C#
动态语言:解释型语言,on the fly
弱类型
边解释边执行
PHP 、SHELL 、Python 、perl
2、编程模型
编程模型主要分为两种:面向对象 和面向过程
面向过程:shell C
面向对象:JAVA Python Perl C++
二、bash变量
变量赋值 :
本地变量:VAR_NAME =VALUE (作用范围是整个脚本都有效)
局部变量:local VARNAME=VALUE (作用域为当前代码段)
环境变量:export VAENAME=VALUE (作用域为当前shell进程及其子进程)
bash变量的类型有:环境变量、本地变量(局部变量)、位置变量、特殊变量。
1、本地变量
bash:
不同的shell,变量不能继承,父类定义的变量,子类不能继承
引用变量:${VARNAME},大部分情况下,大括号可以省略,特殊情况下,大括号不能省略。
2、环境变量
环境变量:export VAENAME=VALUE (作用域为当前shell进程及其子进程)
export VARNAME=VALUE
VARNAME=VALUE
export VARNAME
3、位置变量
$1,$2 ,$3....
4、特殊变量
$? :上一个命令的执行状态返回值。
程序执行,可能有两类返回值:
程序执行结果
程序状态返回代码(0-255)
0:正确执行
1-255:错误执行, 1,2,127 系统预留
5、撤销变量
unset VARNAME
6、查看当前shell中环境变量
set
7、查看当前shell中的环境变量
printenv
env
export
8 、注意事项
脚本在执行时会启动一个子shell进程;
命令行中启动的脚本会继承当前shell环境变量
系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量
三、shell脚本
脚本是命令的堆砌,按实际需求,结合命令流程控制机制实现的源程序。
shebang:魔数 (#!/bin/bash 环境变量)
#:为脚本中的注释行,不进行执行
给创建的文件添加执行权限
chmod +x frist.sh
执行脚本文件 ./frist.sh
四、练习题
写一个脚本,完成以下任务:
(1)、添加5个用户,user1,user2,...user5
(2)、每个用户的密码同用户名,而且要求,添加密码完成后不显示passwd命令的执行结果信息
(3)、每个用户添加完成后,都要显示用户某某已经成功添加。