Bash编程
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Bash 编程 笔记
2/2
d)
-r file 有读的权限 -s file 存在且不为空 -u file 存在并且是 SUID 文件 -x file 有执行权限,目录怎有查找权限 -O file 拥有 file -G file 测试是否是 file 所属组的一个成 员 -L file 符号链接 File1 –nt file2 file1 比 file2 新 File1 –ot file2 file1 比 file2 旧 字符串操作 Str1 = str2 Str1 != str2 Str1 < str2 Str1 > str2 -n str str 的长度大于 0,不为空 -z str str 的长度为 0,空字符串 整数操作 Var1 –eq var2 = ; Var1 –ne var2 !=; Var1 –ge var2 >= ; Var1 –gt var2 > Var1 –le var2 <= Var1 –lt var2 < 逻辑操作 !expr Expr1 && Expr2 Expr1 –a Expr2 Expr1 || Expr2 Expr1 –o Expr2
二、
a)
b) c) d)
Bash 变量
自定义变量 varname=value = 两端不能留空格, 引用的方式为$varname ${varname}。为 了使变量可以在其它进程中使用,需要将 变量到处 export $varname。 环境变量 set 命令可以为变量赋值或者查看环境变 量,unset 命令清除变量值,export 导出 变量可以使其他的进程访问该变量值 位置变量 对应于命令行参数,其中$0 为脚本名称, $1..$9 为参数,参数个数超过 9 以后必须 使用${10}的方式引用变量 其他变量 $? 保存前一个命令的返回码 $- 在 shell 启动或使用 set 命令时提供选 项 $$ 当前 shell 的进程号 $! 上一个子进程的进程号 $# 传给脚本的参数的个数 $* 传给脚本或者函数的参数组成的单个 字符串,即除了脚本名称后从第一个参数 开始的字符串,每个参数以$IFS 分隔。
函数
function fname{ commands
} fname(){
commands } 调用方式:fname[param1 param2 ..] 函数在使用前定义,函数名和参数为函数 的位置变量。函数中的变量应该使用 local 声明为局部变量
$@ 参数列表,这些参数被表示为多个字 符串
三、
a)
b)
四、
a)
Bash 操作符
字符串操作符 ${var:-word} 如果 var 存在且不为空, 则返回它的值,否则返回 word。 ${var:=word} 如果变量 var 存在且为 非空,则返回它的值,否则将变量 var 的 值设置为 word 后再返回 word ${var:+word} 如果变量 var 存在且为 非空,则返回 word,否则返回 null。 ${var:?word} 如果 var 存在且为非空, 则返回变量的值,否则打印信息”var: word“,如果 word 没有指定,则显示 parameter null or not set ${var:offset:length}返回变量 var 的子 串,开始位置为 offset,长度为 length 模式匹配操作符 ${var#pattern} 如果 pattern 匹配 var 的开始部分,删除最小的匹配部分并返回 变量的剩余内容。 ${var##pattern} 如果 pattern 匹配 var 的开始部分,删除最大的匹配部分并返回 变量的剩余内容。 ${var%pattern} 如果 pattern 匹配 var 的结尾部分,删除最小的匹配部分并返回 变量的剩余内容。 ${var%%pattern} 如 果 pattern 匹 配 var 的结尾部分,删除最大的匹配部分并返 回变量的剩余内容。 ${var/pattern/string}用值 string 替换 var 中的 pattern 可疑匹配到的最大部分, 仅替换第一次匹配。 ${var//pattern/string}用值 string 替换 var 中模式 pattern 可以匹配到的最大部 分,全局匹配替换。 ${#var}获取变量 var 的长度
e)
f) g)
六、
do statements
done case case expression in
pattern1) statements;;
pattern2) statements;;
*) Statements;;
esac select select value [in list] do
statements using $value done shift shift n 命令行参数向左传递 n 个串 将存放在位置变量中的命令行参数依次向 左传递。
Bash 编程 笔记
1/2
一、
a)
b) c)
Bash 特殊字符
通配符 * 匹配任何字符串 ? 匹配任何单个字符 [set] 集合运算符 [!set] 除了该字符以外的其他字符 花括号展开式 c{a{r,t,n}}s cars cats cans 其他特殊字符 < 输入重定向 >; 输出重定向 >;>; 输出重定向,追加 ()子 shell 开始,结束 { } 命令块开始、结束 | 管道 \ 转义 ‘ 强制引用,不解释任何特殊字符 “ 弱引用,解释特殊字符 ~ 根目录 ` 命令替换 ; 命令行分割 # 行注释 $ 变量表达式 & 后台执行
流程控制
if if [….];then
command [elif test
Command2] [else
Command3] fi for for value in list do
statements using $value done while while [ -n “$*”] do
statements done until until [ -z “$*”]
条件判断
可以使用[…]结构或者 test 命令测试复杂 的 条 件 , 格 式 。 [expression] 、 test expression。返回 0 为真,否则为假。左 括号后和右括号前的空格是必须的。 文件测试 -d file 存在并且是一个目录 -e file file 存在 -f file file 存在并且是一个文件 -g file file 存在并且是 SGID 文件 -w file 有写权限