bash中文手册学习
2018-04-25 23:48:50 19 举报
AI智能生成
linux下bash中文手册
作者其他创作
大纲/内容
bash学习
高级用法
eval 功能是生成代码用途:把字符串直接解析成代码然后执行
转化成命令举例:mycmd1=\"find . -name *.sh\"mycmd2=\"grep -rnH \"fp-rte\"\"eval ${mycmd1} | ${mycmd2}最终的效果是执行命令
转化成代码举例:FGUO_PATH1=/home/fengtian/self_developnum=1mypath=FGUO_PATH${num} #FGUO_PATH1realpath=$(eval echo \\$\\{$mypath\\}) #转化成代码realpath=/home/fengtian/self_develop
newpath=/home/bangyun/testeval ${mypath}=${newpath}#FGUO_PATH1=/home/bangyun/test
语法规则:1 先是bash解析${var}成真正的数据2 然后eval把它转换成代码eval ${mypath}=${newpath}
case测试结构
格式:case \"$value\" in \"apple\") cmd1 cmd2;; #表示结束相当与break \"banana\") cmd3 cmd4;;esas
问题
bash里面正则表达式规则
bash总体介绍
行首指定解释器#! /bin/bash (linux系统下默认的解释器)
bash的使用范围和特点
特殊字符
命令后台运行 &当命令尾部跟随'&'表示命令进行后台运行
重定向输入输出(就是减号) -1 利用管道将标准输出重定向到其他命令中grep -rnH \"ospfd\" syslog | diff my_log.txt -解释: 1 grep搜索结果输出到标准输出. 2 diff 比较my_log.txt 和前面的grep结果
% 操作符有2种用途:1 数字计算时取模 z=5%3 (结果是2)2 模式匹配操作符
命令替换符(反引号): `command`用途: 将命令的输出结果作为变量赋值给另一个变量
双圆括号结构: (())表示进行数学运算
取值符号 (就是美元符号)$用途: 用来取出变量的内容
4章 变量与参数
1 规则: 变量赋值时(=赋值符号的两边)决不能带空格var1=\"tool\"var2=${var1}var3=${var1/ool/ooth} 将\"tool\"替换成了\"tooth\"
2 字符串的强引用(''单引号包含)和弱引用(双引号包含)echo \"$var1\" # 输出的是var1变量的值testecho '$var1' #输出的是单纯字符串$var1
特殊类型的变量
环境变量: 用于不同脚本之间共享变量1 export 命令把当前设置的环境变量更新出去2 子进程会继承父进程的环境变量
引用
字符串引用: 包含2种1 (双引号)\
1 双引号举例:\"This is ${var1}\
转义字符:解释: 当字符不是字面的含义时1 echo -e '\ABC\XXX' 使用-e参数后可以使用转义字符
测试结构
if 测试状态#可以是命令返回值也可以是测试结构[]then command1 command2else\t cmd10\t cmd11if
1 测试结构命令[]举例:if [ \"abc\" ]then ls -lfi
2 测试命令返回值举例:if grep \"abc\" then\techo \"grep test1\"fi
测试状态 -> 算数表达式的测试结果是双元括号: (())((100||20)) #表示算数运算或
测试文件:
-e 测试文件是否存在
其他比较
字符串比较: [ ${str10} == ${str20} ] #表示相等[ ${str10} != ${str20} ] #表示不相等
复合比较: && 表示与 || 表示或if [ ${str30} != \"apple\" ] && [ ${str30} != \"banana\"]then command1 command2fi
其他测试
-z 测试字符串长度为0
if [ -z ${str} ]
if [ -n \"${str}\"]
退出和退出状态:
循环结构
for var in [list]do \tcmd1\tcmd2done
举例:for var in \"abc\" \"x1\" \"y1\"
[list] 中允许含有通配符
while [ condition ]docommand(s)...done
条件判断
字符串处理
字符串长度:${#str1} 取得字符串的长度
举例:string=\"abcdedf\"${string:1} -> ”bcdef“${string:1:2} -> ”bc“
负值举例:string=\"ABCDEF12345\"${string:(-2)} -> \"45\"
字符串删除子字符串:规则:1.1个'#'表示最短字符串匹配${string#delete_short_str}2. 2个'##' 表示最长字符串匹配${string##del_long_str}3. 1个'%'表示从尾部开始最短匹配4. 2个’%%‘表示从尾部开始最长匹配
1 举例:string=\"abcdef12345UVWYZabcd\"str2=${string#a*d} -> \"ef12345UVWYZabcd\"
2 举例:string=\"abcdef12345UVWYZabcd987\"str2=${string##a*d} -> \"987\"
3 举例从右开始匹配字符串:str4=\"abcdef12345UVWYZabcd98239207\" str4_del=${str4%9*7} -> \"abcdef12345UVWYZabcd9823\"
命令替换:本质上是启动一个子进程执行该命令
2种格式1 var1=$(ls -l)2 var2=`ls -l`
I/O重定向
1 关闭输入文件M: M<&- 2 关闭输出文件N: N>&-
cmd < file把文件作为命令的输入
0 条评论
回复 删除
下一页