# 课堂笔记
bash变量和逻辑运行
终端:附着在终端的接口程序
GUI:KDE GNOME XFCE
CLI:/etc/shells
bash的特性:
命令行展开:~,{}
命令别名:alias, unalias
命令历史:history
文件名通配:glob
快捷键:C+a e u k l
命令补全:$PATH
路径补全:
bash特性之:命令hash
hash本身也是一个bash内嵌的命令
作用:缓存此前命令的查找结果:key-value
key:搜索键
value:值
hash记录的是外部命令
hash:列出
hash:-d COMMAND:删除
hash -r:清空
bash的特性之:变量
程序:指令+数据
指令:由程序文件来提供
数据:IO设备、文件、管道、变量
程序:算法+数据结构
变量名:指向内存空间
变量赋值:name=value (shell)
变量类型:存储格式、表示数据范围、参与的运算
编程语言:
强类型变量
弱类型变量:
bash把所有变量都视作字符型
bash不支持浮点类型
bash中的变量无需事先声明
变量替换:把变量名出现的位置替换为其所指向的内存空间中数据
变量引用:\$\{var_name\},\$var_name
变量名:数字、字母、下划线,不能使用数字开头
bash变量类型:
本地变量:作用域仅为当前shell进程
环境变量:作用域当前shell进程以及其子进程
局部变量:作用域为某代码片段(函数上下文)
位置参数变量:当执行脚本的shell进程传递的参数
特殊变量:shell内置的有特殊功用的变量
\$\?:
0: 成功
1\~255:失败
本地变量:
变量赋值:name=value
变量引用:${name}, $name
"":变量名会替换为其值;
'':变量名不会替换为其值;
查看变量:set
撤销变量:unset name
注意:此处非变量引用
环境变量:
变量赋值:
1. export name=value
2. name=value
export name
3. declare -x name=value
4. name=value
declare -x name
变量引用:${name},$name
注意:bash内嵌了许多环境变量,通常为全大写字母,用于定义bash的工作环境;
PATH HISTFILE HISTSIZE HISTFILESIZE HISTCONTROL SHELL HOME UID PID PWD OLDPWD
查看环境变量:export declare -x printenv env
撤销环境变量:unset name
只读变量:
(1) declare -r name
(2) readonly name
只读变量无法重新赋值,并且不支持撤销,生命周期为当前shell进程的生命周期;
bash特性之多命令执行:
多个命令以 ; 隔开,依次执行;
逻辑运算:
true false
与:(1 true; 0 false) [为了记忆,可以把与运算视作乘法运算]
1 && 1 = 1
1 && 0 = 0
0 && 1 = 0
0 && 0 = 0
或:
与上面相反
非:
取反 !1 = 0
这里注意执行命令的短路法则