shell语法+crontab实战
crontab 定时任务
0. 三方相关文档
Linux shell bash 内置变量参考 | Tengwait
shell 脚本编程
经典的 Shell 十三问
Bash 脚本中的错误处理
一篇教会你写 90% 的 Shell 脚本
1.shell脚本入门
1.1 什么是shell和shell脚本
1.2 shell脚本语言的种类及优势
1.3 shell脚本的开发的基本规范
2.shell变量
2.1 环境变量与普通变量
本文档发布于https://mrdoc.fun
-
+
首页
Linux shell bash 内置变量参考 | Tengwait
原文地址 [tengwait.com](https://tengwait.com/2020/07/12/Linux-shell-bash%E5%86%85%E7%BD%AE%E5%8F%98%E9%87%8F%E5%8F%82%E8%80%83/) linux shell bash 内置变量参考 -------- # 特殊的 shell 变量 |变量|含义| |--|--| | $0 | 脚本名 | | $1-$9 |位置参数1-9 | | ${10} | 位置参数10 | | $# | 位置参数的个数 | | $* | 所有位置参数(作为单个字符串) | | $@ | 所有位置参数(每个作为单独字符串) | | ${#*} | 传递到脚本中的命令行参数的个数 | | $? | 返回值 | | $$ | 脚本进程的PID | | $- | 传递到脚本中的标识 | | $_ | 之前命令的最后一个参数 | | $! | 运行在后台的最后一个作业的进程ID(PID) | # 测试操作:二元比较 ----------------------------------- ### 算术比较 |操作符|含义| |--|--| | -eq | 等于 | | -ne | 不等于 | | -lt 或 ((<)) | 小于 | | -le 或 ((<=)) | 小于等于 | | -gt 或 ((>)) | 大于 | | -ge | 大于等于 | | 双括号(( … ))结构| | | >| 大于 | | >=| 大于等于 | | <| 小于 | | <=| 小于等于 | ### 字符串比较 | 操作符 | 含义 | |---|---| | = | 等于 | | == | 等于 | | != | 不等于(这个操作符将在[[]]结构中使用模式匹配) | | < | 小于(ASCII) | | > | 大于(ASCII) | | -z | 字符串为空 | | -n | 字符串不为空 | >d 如果在双中括号 [[…]] 测试结构中使用的话, 那么就不需要使用转义符 \ 了 **注意:** `==` 的功能在 [[]] 和 [] 中的行为是不同的, 如下: 1. [[ $a == z*]] # 如果 $a 以”z”开头 (模式匹配) 那么将为 true 2. [[ $a == "z*" ]] # 如果 $a 等于 z*(字符匹配), 那么结果为 true 3. [ "$a" == "z*" ] # 如果 $a 等于 z*(字符匹配), 那么结果为 true 4. [ $a == z* ] # File globbing 和 word splitting 将会发生 ### 文件类型操作 | 操作符 | 含义 | |---|---| | -e | 文件是否| | -f | 标准文件| | -d | 目录| | -h | hard link链接| | -L | link| | -b | 块设备| | -c | 字符设备| | -p | 管道| | -S | socket套接字| | -t | 文件与终端相关联| | -N | 文件最后一次读取后被修改过| | -O | 文件属主是自己| | -G | 组id与执行者一致| | -s | 文件大小不为0| | -r | 文件具有读权限| | -w | 文件具有写权限| | -x | 文件具有执行权限| | -g | 设置了sgid标记| | -u | 设置了suid标记| | -k | 设置了黏贴位| | file1 -nt file2 | file1比文件file2新| | file1 -ot file2 | file1比file2旧 | | file1 -ef file2 | file1和file2是同一个文件的硬链接 | **注:以上操作符加上”!” 表示” 非” (反转上边的测试结果)** ### 参数替换和扩展 | 表达式 | 含义| |---|---| | ${var_DEFAULT} | 如果var没有被声明, 那么就以$DEFAULT作为其值 *| | ${var=DEFAULT} | 如果var没有被声明, 那么就以$DEFAULT作为其值 *| | ${var:-DEFAULT} | 如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 *| | ${var:=DEFAULT} | 如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 *| | ${var+OTHER} | 如果var声明了, 那么其值就是$OTHER, 否则就为null字符串| | ${var:+OTHER} | 如果var被设置了, 那么其值就是$OTHER, 否则就为null字符串| | ${var?ERR_MSG} | 如果var没被声明, 那么就打印$ERR_MSG*| | ${var:?ERR_MSG} | 如果var没被设置, 那么就打印$ERR_MSG*| | ${!varprefix*} | 匹配之前所有以varprefix开头进行声明的变量| | ${!varprefix@} | 匹配之前所有以varprefix开头进行声明的变量| ### 字符串操作 | 表达式 | 含义| |---|---| | ${#string} | $string的长度| | ${string\:position} | 在$string中, 从位置$position开始提取子串| | ${string\:position\\:length} | 在$string中, 从位置$position开始提取长度为$length的子串| | ${string#substring} | 从变量$string的开头, 删除最短匹配$substring的子串| | ${string##substring} | 从变量$string的开头, 删除最长匹配$substring的子串| | ${string%substring} | 从变量$string的结尾, 删除最短匹配$substring的子串| | ${string%%substring} | 从变量$string的结尾, 删除最长匹配$substring的子串| | ${string/substring/replacement} | 使用$replacement, 来代替第一个匹配的$substring| | ${string//substring/replacement} | 使用$replacement, 代替所有匹配的$substring| | ${string/#substring/replacement} | 如果$string的前缀匹配$substring, 那么就用$replacement来代替匹配到的$substring| | ${string/%substring/replacement} | 如果$string的后缀匹配$substring, 那么就用$replacement来代替匹配到的$substring| | expr match \"$string\" \'$substring\' | 匹配$string开头的$substring* 的长度| | expr \"$string\":\'$substring\' | 匹配$string开头的$substring* 的长度| | expr index \"$string\" $substring | 在$string中匹配到的$substring的第一个字符出现的位置| | expr substr $string $position $length | 在$string中从位置$position开始提取长度为$length的子串| | expr match \"$string\" \'($substring)\' | 从$string的开头位置提取$substring*| | expr \"$string\":\'($substring)\' | 从$string的开头位置提取$substring*| | expr match \"$string\" \'.*($substring)\' | 从$string的结尾提取$substring*| | expr \"$string\":\'.*($substring)\' | 从$string的结尾提取$substring*| **注:$substring 是一个正则表达式** ### 一些结构的汇总 | 表达式 | 含义| |---|---| | 中括号 | | | if [ CONDITION ] | 测试结构| | if [[ CONDITION ]] | 扩展的测试结构| | Array[1]=element1 | 数组初始化| | [a-z] | 正则表达式的字符范围| | 大括号 | | | ${variable} | 参数替换| | ${!variable} | 间接变量引用| | { command1; command2; . . . commandN; } |代码块| | {string1,string2,string3,…} |大括号扩展| | 圆括号 || | ( command1; command2 ) |子shell中执行的命令组| | Array=(element1 element2 element3) |数组初始化| | result=$(COMMAND) |在子shell中执行命令, 并将结果赋值给变量| | >(COMMAND) |进程替换| | <(COMMAND) |进程替换| | 双圆括号 || | (( var = 78 )) |整型运算| | var=$(( 20 + 5 )) |整型运算, 并将结果赋值给变量| | 引号 || | “$variable” |“弱”引用| | ‘string’ |“强”引用| | 后置引用 || | result=COMMAND |在子shell中运行命令, 并将结果赋值给变量| * * * 转载请注明来源,欢迎指出任何有错误或不够清晰的表达,可以邮件至 admin@tengwait.com
Jonny
Sept. 16, 2021, 12:23 p.m.
648
0 条评论
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
如遇文档失效,可评论告知,便后续更新!
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价
【阿里云】2核2G云服务器新老同享 99元/年,续费同价(不要✓自动续费)
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价
【阿里云】2核2G云服务器新老同享 99元/年,续费同价(不要✓自动续费)
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期