bash特性及bash脚本编程初步
-
终端,附着在终端的接口程序:
GUI:KDE, GNome, Xfce CLI:/etc/shells bash zsh fish
-
bash的特性:
命令行展开:~, {} 命令别名:alias, unalias 命令历史:history 文件名通配:glob 快捷键:Ctrl+a, e, u, k, l 命令补全:$PATH 路径补全:
-
bash特性之:命令hash
缓存此前命令的查找结果:key-value
key:搜索键
value:值hash命令: hash:列出 hash -d COMMAND:删除 hash -r:清空
-
bash的特性之:变量
程序:指令+数据
指令:由程序文件提供
数据:IO设备、文件、管道、变量
程序:算法+数据结构
变量名+指向的内存空间
变量赋值:name=value
变量类型:存储格式、表示数据范围、参与的运算
编程语言:
强类型变量
弱类型变量:
bash把所有变量视作字符型
bash中的变量无需事先声明
变量替换:把变量名出现的位置替换为其所指向的内存空间中数据;
变量引用:${var_name}, $var_name
变量名:变量名只能包含数字、字母和下划线,而且不能以数字开头;
变量名:见名知义,命名机制遵循某种法则;不能够使用程序的保留字,例如if, else, then, while等等;
bash变量类型:
本地变量:作用域仅为当前shell进程;
环境变量:作用域为当前shell进程及其子进程;
局部变量:作用域仅为某代码片断(函数上下文);
位置参数变量:当执行脚本的shell进程传递的参数;
特殊变量:shell内置的有特殊功用的变量;
$?:
0:成功
1-255:失败
本地变量
变量赋值:name=value
变量引用:${name},$name
" ":变量名会替换为其值;
' ':强引用,变量名不会替换为其值;
查看变量:set
撤销变量:unset name
此处非变量引用
环境变量
变量赋值:
export name=value
or
name=value
export name
or
declare -x name=value
or
name=value
declare -x name
注意:bash内嵌了许多环境变量(通常为全大写字符),用于定义bash的工作环境
PATH, HISTFILE, HISTSIZE, HISTFILESIZE, HISTCONTROL, SHELL, HOME, UID, PWD, OLDPWD
查看环境变量:export, declare -x, printenv, env
撤销环境变量:unset name
只读变量:
declare -r name
readonly name
只读变量无法重新赋值,并且不支持撤销;存活时间为当前shell进程的生命周期,随shell进程终止而终止;

bash特性之多命令执行:
~]$ COMMAND1; COMMAND2; COMMAND3; ...
逻辑运算
运算数:真(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
! 0 = 1
短路法则:
~]$ COMMAND1 && COMMAND2
COMMAND1为“假”,则COMMAND2不会再执行;
否则,COMMAND1为“真”,则COMMAND2必须执行;
~]$ COMMAND1 || COMMAND2
COMMAND1为“真”,则COMMAND2不会再执行;
否则,COMMAND1为“假”,则COMMAND2必须执行;
示例:~]# id $username || useradd $username
网友评论