加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

2.7-egrep及bash中的变量

发布时间:2020-12-15 09:21:22 所属栏目:安全 来源:网络整理
导读:egrep及扩展的正则表达式 egrep=grep -E grep [OPTIONS] PATTERN [FILE...] 扩展正则表达式的元字符: 字符匹配: .: []: [^]: 次数匹配: *: ?:0或1次 +:1次或多次 {m}:匹配m次 {m,n}:至少m,至多n次 锚定匹配: ^: $: ,b ,b 分组: () 后向引

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:命令本身

$*:传递给脚本的所有参数(将所有参数当成一个字符串)

$@:传递给脚本的所有参数(将所有参数当成独立的字符串)

$#:传递给脚本的参数个数

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读