2.7-egrep及bash中的变量
egrep及扩展的正则表达式 egrep=grep -E grep [OPTIONS] PATTERN [FILE...] 扩展正则表达式的元字符: 字符匹配: .: []: [^]: 次数匹配: *: ?:0或1次 +:1次或多次 {m}:匹配m次 {m,n}:至少m,至多n次 锚定匹配: ^: $: &;,b &;,b 分组: () 后向引用:1,2,3,...... 或者: a|b C|cat:C或cat 练习: 1.显示当前系统root,centos或user1用户的默认shell和UID 2.找出/etc/rc.d/init.d/function文件(centos6)中某单词后面跟一个小括号的行 3.使用echo输出绝对路径,使用egrep取出其基名 基名: # basename /etc/sysconfig/network network 目录名: # dirname /etc/sysconfig/network /etc/sysconfig 进一步地:使用egrep取出路径的目录名,类似于dirname命令的结果 4.找出ifconfig命令结果中1-255之间的数值 5.找出ifconfig命令结果中的ip地址 fgrep:不支持正则表达式搜索 bash的基础特性(4) 变量类型: 一旦定义了变量,则数据存储格式,存储空间大小,参与运算种类也同时被限定 字符型: 数值型: 整型和浮点型 强类型:定义变量时必须指定类型,参与运算必须符合类型要求,调用未声明的变量会产生错误 弱类型:定义变量时无须指定类型,默认均为字符型:参与运算会自动进行隐式类型转换,变量无须事先定义可直接调用 bash bash中的变量的种类: 根据变量的生效范围等标准 本地变量:生效范围为当前shell进程,对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效 环境变量:生效范围为当前shell进程及其子进程(declare -x variable_name=value) 局部变量:生效范围为当前shell进程中某代码片段(通常指函数) 位置变量:$1,$2,$3......来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数 特殊变量:$?,$0,$*,$#,$@ 本地变量: 变量赋值:variable='value' 可以使用引用: value: (1) 可以是直接字串:name="username" (2) 变量引用:name="$username" (3) 命令引用:name=`COMMAND`,name=$(COMMAND) 变量引用:${name},$name "":弱引用,其中的变量引用会被替换为变量值 '':强引用,其中的变量引用不会被替换为变量值,而保持原字符串 显示已定义的所有变量 set 销毁变量: unset name 环境变量: 变量声明,赋值: export name=VALUE declare -x name=VALUE 变量引用:$name,${name} 显示所有环境变量 export env printenv 销毁: unset name bash有许多内建的环境变量:PATH,SHELL,UID,HISTSIZE,HOME,PWD...... 变量命名法则: 1.不能使程序中的保留字:例如if,for 2.只能使用数字,字母及下划线,且不能以数字开头 3.见名知义 只读变量:变量不能被修改和撤销 readonly name declare -r name 位置变量: 在脚本代码中调用通过命令行传递给脚本的参数: $1,$2....:对应调用第1,第2个参数 shift[n]:换岗操作 $0:命令本身 $*:传递给脚本的所有参数(将所有参数当成一个字符串) $@:传递给脚本的所有参数(将所有参数当成独立的字符串) $#:传递给脚本的参数个数 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |