Linux 常用变量
变量
Linux中变量能够提高我们的工作效率,简单的定义变量:就是以一组文字或符号等,来代替一些设置或者是一串保留的数据,让我们在需要的时候方便的调用。
变量的显示与设置
显示变量内容:echo $变量名 或 echo ${变量名}
变量的设置规则:
- 变量赋值用等号“=”;
- 等号两边不能直接接空格等特殊字符;
- 变量名称只能是字母与数字,但是开头不能是数字;
- 变量内容若有空格可用单引号“ ‘ ’”或双引号“ “ ”将变量内容结合起来;
单引号强引用,内容强行引用为字符。 双引号若引用,可引用内用内的变量。
- 特殊符号需要用反斜杠“\”转义;
- 若需要引用命令则使用返单引号“ ` ”【可多层嵌套】或“$(命令)”【不可多层嵌套】;
- 变量内容累加:变量名=“$变量名”累加内容(PATH=”PATH”:/root/bin);
取消变量:unset 变量名(不加“$”符号)
变量类型:
本地变量:只对当前shell进程生效
环境变量:可对当前shell进程和子进程生效
局部变量:只对当前shell进程特定代码段生效
特殊变量: $?, $0, $*, $@, $# *
- *$#:获取当前shell命令行中参数的总个数 *
- *$*:获取当前shell的所有参数 “$1 $2 $3 …,受IFS控制
- $@:这个程序的所有参数 “$1″ “$2″ “$3″ “…”,不受IFS控制
- $0 获取当前执行的shell脚本的文件名
- $n 获取当前执行的shell脚本的第n个参数值,n=1..9 $$ 获取当前shell的进程号(PID)
- $! 执行上一个指令的PID
查看已设变量:
env:显示当前用户变量
export:显示当前导出成用户变量的shell变量(还可设置环境变量)
set:显示所有变量(含环境变量与自定义变量)
声明变量类型:
declera/typeset 两者功能一样,都是声明变量类型,如果其后不接参数,将与set一样列出所有的变量。
常用选项:
- -a:定义数组变量
- -i:定义整数变量
- -x:定义环境变量
- -r:定义变量为readonly类型,该变量不可改变内容,也不能重设。 若不指定,变量类型默认为字符串类型。 bash不支持浮点型数值
bash中的算术运算: let
- +, -, *, /, %取模(取余) , **(乘方) 实现算术运算: *
- (1) let var=算术表达式
- (2) var=$[算术表达式]
- (3) var=$((算术表达式))
- (4) var=$(expr arg1 arg2 arg3 …)
- (5) declare –i var = 数值
- (6) echo ‘算术表达式’ | bc 乘法符号有些场景中需要转义, 如bash有内建的随机数生成器: $RANDOM( 1-32767) echo $[$RANDOM%50] : 0-49之间随机数 增强型赋值: +=, -=, *=, /=, %= let varOPERvalue 例如:let count+=3 自加3后自赋值 自增,自减: let var+=1 let var++ let var-=1 let var–
test判断测试
数值测试:
- -gt: 是否大于
- -ge: 是否大于等于
- -eq: 是否等于
- -ne: 是否不等于
- -lt: 是否小于
- -le: 是否小于等于 字符串测试
- ==:是否等于
- >: ascii码是否大于ascii码
- <: 是否小于
- !=: 是否不等于
- =~: 左侧字符串是否能够被右侧的PATTERN所匹配 注意: 此表达式一般用于[[ ]]中;
扩展的正则表达式
- -z “STRING”:字符串是否为空,空为真,不空为假
- -n “STRING”:字符串是否不空,不空为真,空为假 注意:用于字符串比较时的用到的操作数都应该使用引号 。
存在性测试:
- -a FILE:同-e
- -e FILE: 文件存在性测试,存在为真,否则为假 存在性及类别测试
- -b FILE:是否存在且为块设备文件
- -c FILE:是否存在且为字符设备文件
- -d FILE:是否存在且为目录文件
- -f FILE:是否存在且为普通文件
- -h FILE 或 -L FILE:存在且为符号链接文件
- -p FILE:是否存在且为命名管道文件
- -S FILE:是否存在且为套接字文件 文件权限测试:
- -r FILE:是否存在且可读
- -w FILE: 是否存在且可写
- -x FILE: 是否存在且可执行 文件特殊权限测试:
- -u FILE:是否存在且拥有suid权限
- -g FILE:是否存在且拥有sgid权限
- -k FILE:是否存在且拥有sticky权限 文件大小测试:
- -s FILE: 是否存在且非空 文件是否打开:
- -t fd: fd表示文件描述符是否已经打开且与某终端相关
- -N FILE:文件自动上一次被读取之后是否被修改过
- -O FILE:当前有效用户是否为文件属主
- -G FILE:当前有效用户是否为文件属组
双目测试:
- FILE1 -ef FILE2: FILE1与FILE2是否指向同一个设备上的相同inode
- FILE1 -nt FILE2: FILE1是否新于FILE2
- FILE1 -ot FILE2: FILE1是否旧于FILE2
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 老张技术笔记!