深入理解bash及字符串的处理

1、bash的内置变量:

PATH PS1 HOSTNAME UID HISTFILE HISTEILESIZE HISTCONTROL

$BASH:bash二进制程序文件的路径

$BASH_SUBSHELL:子shell的层次

$BASH_VERSION

$EDITOR:默认编辑器

$EUID:有效的用户ID

$UID:当前用户的ID号

$FUNCNAME:当前函数的名称

$GROUPS:当前用户显示的组

$HOME:当前用户的家目录

$HOSTTYPE:主机架构类型,用来识别系统硬件

$MACHTYPE:平台类型,系统平台依赖的编译平台

$OSTYPE:OS系统类型

$IFS:输入数据时的字段分隔符,默认是空白符(空格、制表符、换行符)

$OLDPWD:上次使用的目录

$PWD:当前目录

$PPID:父进程

$PS1:主提示符

$PS2:第二提示符,主要用于补充完全命令输入时的提示符

$PS3:第三提示符,用于select命令中

$PS4:第四提示符,当使用-X选项调用脚本时,显示的提示符,默认为+号

$SECONDS:当前脚本已经运行的时长

$SHLVL:shell的级别。bash别嵌入的深度

2、特殊变量:

$0:脚本名称自身

$1,$2。。。。:位置参数

$#:命令行参数个数

$*:所有的参数,被当作一个字符串

[email protected]:所有的参数,每个参数都是一个独立的字符串

$-:传递给脚本的标记

$!:运行于后台的最后一个作业的PID

$_:上一条命令的最后一个参数的值

$?:上一条命令状态的返回值

$$:脚本自身的PID

操作变量:

${#var} :返回变量中字符串的长度

${var}:变量引用

${var:-default}:如果var没有声明或者为空,则返回default字串,否则返回var自身的值

${var:+default}:如果var没有声明或者为空,则返回空字串,否则返回default的值

${var:=default}:如果var没有声明或者为空,则返回default字串,并且将default赋值给var,否则返回var自身的值

${var:?default}:如果var没有声明或者为空,则以default为错误信息返回,否则

zb 返回var自身的值

字串消除

${var#*word}:查找var中自左而右第一个被word匹配到的串,并将此串及向左的所有内容都删除

${var##*word}:查找var中自左而右最后一次被word匹配到的串,并将此串及向左的所有内容都删除

${var%word*}:查找var中自右而左第一个被word匹配到的串,并将此串及向右的所有内容都删除

${var%%word*}:查找var中自右而左最后一次被word匹配到的串,并将此串及向右的所有内容都删除

取字串:

${var:pos}:偏移pos个字符,取余下的字串

name=jerry,${name:2}结果为rry

${var:pos:num}偏移pos个字符,取num个字符长度的字串

name=‘hello world‘ ${name:2:5}结果为llo w

字串替换

${var/Pattern/Replaceplacement} :以Pattern为模式匹配var中的字串,将第一次匹配到的替换为Replaceplacement

${var// Pattern/Replaceplacement} :以Pattern为模式匹配var中的字串,将全部匹配到的替换为Replaceplacement6

声明变量:

declare

-i:整形

-a:数值

-x:环境变量

-r:只读变量,不能撤销,不能修改,相当于readonly

-f:声明函数

bash编程的信号捕获(KILL无法捕捉)

trap 陷阱

#查看信号

kill -l

#使用方法,命令加信号

trap ‘command’ signal

信号捕捉用于:在中途中止时做一些清理操作

时间: 2024-08-27 04:39:47

深入理解bash及字符串的处理的相关文章

一篇文章助你理解Python3中字符串编码问题

前几天给大家介绍了unicode编码和utf-8编码的理论知识,以及Python2中字符串编码问题,没来得及上车的小伙伴们可以戳这篇文章:浅谈unicode编码和utf-8编码的关系和一篇文章助你理解Python2中字符串编码问题.下面在Python3环境中进行代码演示,分别Windows和Linux操作系统下进行演示,以加深对字符串编码的理解. 在Python2的Python文件的文件头往往会声明字符的编码格式,通过会使用代码"#-*- coding -*-"作为编码声明,如下图所示

*Bash:字符串替换。

我们在编写bash脚本的时候,经常需要替换掉字符窗中特殊的字符,我们看看有几种方法可以实现. 最常用的方法是使用sed命令.例如 [[email protected] test]$ a="This is a / and you will know /" ; echo "$a" | sed "s/\//\\\\\//g" This is a \/ and you will know \/ 但是相当复杂,应为在替换部分要使用双反斜杠,"\\

bash颜色显示方案、bash配置文件及bash变量字符串处理

bash颜色的显示规则: 调用了ASCII编码对于颜色的设置方案: Ctrl键:\033 [:控制字符和颜色代码之间的分隔符: 所有的颜色代码都应该使用m结尾 颜色代码: 0:表示关闭颜色显示属性,恢复为黑白色: 1:加粗显示文本字符: 4:为文本字符添加下划线标识: 5:使文本字符闪烁: 7:将文本字符的背景颜色和前景颜色交换: 8:将文本字符的背景颜色设置为与前景色相同: 30-39:设置文本字符的前景色,38,39为保留暂时未被使用: 30为灰色:31为红色:32为绿色:33是黄色:34为

一篇文章助你理解Python2中字符串编码问题

前几天给大家介绍了unicode编码和utf-8编码的理论知识,没来得及上车的小伙伴们可以戳这篇文章:浅谈unicode编码和utf-8编码的关系.下面在Python2环境中进行代码演示,分别Windows和Linux操作系统下进行演示,以加深对字符串编码的理解. 1.首先在Windows操作系统下的Python2环境中进行演示,我们都知道Python2中的编码问题经常出现,需要通过编码(encode)和解码(decode)进行实现.通过cmd进入命令行窗口,然后输入两个字符串'abc'和u'a

bash:裁剪字符串 ${var:3:2}

1)按照index和长度裁剪变量字符串var=foobar echo ${var:3} -------bar echo ${var:3:2} -------ba 从index为3开始,取两个echo ${var: -4} 2)使用模式裁剪字符串 6 phone=555-456-1414 7 echo ${phone#*-} 456-1414 从开头匹配 8 echo ${phone##*-} 1414 贪婪 9 echo ${phone%-*} 555-456 从结尾匹配 10 echo ${p

bash处理字符串

# 1. 取字符串的子串, 比如说从TIME_NOW分别取出日期和时间DATE_TODAY="${TIME_NOW:0:8}"    # ${var:beg_pos:sub_str_length}, beg_pos是子串的起始位置(从0开始), sub_str_length为子串长度TIME_TODAY="${TIME_NOW:8:6}"# 或者TIME_TODAY="${TIME_NOW:8}"      # sub_str_length为0表

Bash Shell字符串操作

转自:http://my.oschina.net/aiguozhe/blog/41557,并对内容作了验证修改. 1. 取长度 str="abcd" expr length $str # 4 echo ${#str} # 4 2.查找子串的位置 貌似也只有单个字符的时候可用.str="abc" expr index $str "a" # 1 expr index $str "b" # 2 expr index $str &qu

java入门概念个人理解之从字符串比较到==和equals方法区别

我们先看代码 String str1 = new String("hello"); String str2 = "hello"; System.out.println("str1==str2: " + (str1==str2)); \\1 System.out.println("str1.equals(str2): " + str1.equals(str2)); \\2 输出结果: str1==str2: false str1

Linux Bash Shell字符串抽取、按列合并和格式化输出

需求来源:默认的ip link show命令输出会输出系统中已经存在的网卡(包括虚拟网卡)的名称.MAC地址.端口状态等信息,但也夹杂着一些无用的信息,此次的字符串操作就是将这些信息中的网卡名称.MAC地址.端口状态取出来. 涉及到的知识包括:常用的字符串的处理工具awk.sed.cut等的用法,paste按列合并,printf格式化输出等. 例如原输出信息为: 现在要把上图中红色框内的信息全部提取出来,但难点在于ip link show命令的默认输出会将MAC地址打印在下一行,导致普通的awk