bash特性及bash脚本编程入门
bash特性及bash脚本编程入门
终端,及附着在终端上的接口程序:
GUI:KDE,GNome,Xface;
GLI:/etc/shells;
bash特性:命令hash
命令hsah:记录或显示命令位置;
功能是用于管理命令运行时查询的哈希表。hash命令可以显示与删除命令运行时系统查询的哈希表信息,如果不加任何参数,则会默认输出路径列表的信息,这份列表会包含先前hash命令调用找到的Shell环境中命令的路径名。
常用选项:
hash:列出哈希表
hash -d 命令: 删除单个命令;
hash -r:清空哈希表;
bash特性:变量
程序:指令+数据;
指令:由程序文件提供;
数据:标准输入、文件、管道、变量;
程序:算法+数据结构;
变量赋值:变量名+指向的内存空间;
变量赋值方式:名称=值;
变量类型:存储格式、表示数据范围、参与的运算;
注意:bash属于弱类型变量,把所有变量通通视为字符类型;不支持浮点数据;
bash变量无需事先声明,相当于,把声明和赋值过程同时实现;
变量替换:把变量名出现的位置替换为其所指向内存空间中数据;
变量引用:${变量名},大括号可以省略,常用为$变量名;
变量名:变量名只能包含字母、数字、下划线而且不能以数字开头;变量名要做到:见名知义,命名机制遵循某种法则;不能够使用程序的保留字符,例如if、else、while等等;
bash的变量类型:本地变量、环境变量、局部变量、位置参数、特殊变量;
本地变量:作用范围仅为当前shell进程;
赋值方式:变量名=值;
引用方式:$变量名、${变量名};
"$变量名"(弱引用):变量名会替换为其值;
'$变量名'(强引用):变量名不会替换为其值;
查看变量:set;
变量撤销:unset;例如 unset 变量名;注意:此处非变量引用不需要$;
环境变量:作用范围当前shell进程及子进程;
export 命令:功能是用于将变量提升成环境变量,亦可将Shell函数输出为环境变量;
赋值方式:1、export 变量名=值;
2、变量名=值
export 变量名
3、declare -x 变量名=值;
4、变量名=值
declare -x 变量名
引用方式:$变量名、${变量名};
注意:bash内嵌了许多环境变量(通常为全大写字符),用于定义bash的工作环境;
例如:PATH、HISTFILE、HISTSIZE、HISTFILESIZE、HISTCONTROL、SHELL、HOME、UID、PWD、OLDPWD
查看环境变量:export,declare -x,printenv,env;
撤销环境变量:unset 变量名
只读变量:1、declare -r 变量名;2、readonly 变量名;
注意:只读变量无法重新赋值,并且不能撤销;存活时间为当前shell进程的生命周期,随shell进程终止而止;
局部变量:作用范围仅为某段代码片段(函数上下文);
位置参数:向执行脚本的shell进程传递参数;
特殊变量:shell内置的有特殊功用的变量;
例如:$?:保存命令执行结果;0:成功;1-255:失败;
bash特性:多命令执行;
~]# 命令1;命令2;
例如:echo $firstname;echo $twoname;
逻辑运算:
运算数:真(true、yes、on、1);
假(false、no、off、0);
与:1 && 1=1;
1 && 0=0;
0 && 1=0;
0 && 0=0;
或:1 || 1=1;
1 || 0=1;
0 || 1=1;
0 || 0=0;
非:!1=0;
!!=1;
异或:不同
短路机制:
~]# 命令1 && 命令2;
与运算,在这个机制中命令1执行结果为假,则命令2不会执行;
否则命令1执行结果为真、则命令2必须执行;
~]# 命令1 || 命令2;
或运算,在这个机制中命令1执行结果为真,则命令2不会执行;
否则命令1执行结果为假、则命令2必须执行;
例如:~]# id $username || useradd $username
如果变量username用户名不存在,则创建username用户;