2.7-egrep及bash中的变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,$*,$#,[email protected]
本地变量:
变量赋值: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:命令本身
$*:传递给脚本的所有参数(将所有参数当成一个字符串)
[email protected]:传递给脚本的所有参数(将所有参数当成独立的字符串)
$#:传递给脚本的参数个数
以上是关于2.7-egrep及bash中的变量的主要内容,如果未能解决你的问题,请参考以下文章