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

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

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

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

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...