linux命令expr linux命令行大全( 二 )


(4) 模式匹配(按照正则表达式模式匹配串)
通过指定冒号选项计算字符串中字符数 。.*意即任何字符重复0次或多次 。
VALUE=https://www.04ip.com/post/account.doc
expr $VALUE : ’.*’
8
在expr中可以使用字符串匹配操作,这里使用模式抽取.doc文件附属名 。
$expr $VALUE : ‘\(.*\).doc’
accounts
(5) 其他
+ TOKEN
将TOKEN解释为串 , 不管它是一个关键字或者一个操作符
延伸知识:
引号的作用
1 双引号(“”)
1)使用””可引用除字符$(美元符号)、`(反引号)、\(反斜线)外的任意字符或字符串 。双引号不会阻止shell对这三个字符做特殊处理(标示变量名、命令替换、反斜线转义) 。
Eg:name=gezn; echo “User name:$name”//将打印User name :gezn
Echo “The date is:`date +date-%d-%m-%Y`”//将打印The date is: 03-05-2009
Echo –e “$USER\t$UID” //将打印gezn 500
2)如果要查新包含空格的字符串经常用到双引号
2 单引号(’’)
1) 如果用单引号把字符串括起来,则dayi9nhao内字符串中的任何特殊字符的特殊含义均被屏蔽 。
2) 举例:echo –e ‘$USER\t$UID’//将打印$USER $UID(没有屏蔽\t,是因为选项“-e”的缘故)
echo ‘USER\t$UID’ //将打印$USER\t$UID
3 反引号(``)
1) shell将反引号中的内容作为一个系统命令,并执行其内容 。使用这种方法可以替换输出为一个变量
2) 举例:a=`date + date-%d-%m-%Y` //将打印The date is: 03-05-2009
4.反斜线(\)
1)如果下一个字符有特殊含义 , 反斜线防止shell误解其含义,即屏蔽其特殊含义 。
2)下属字符包含有特殊含义: * + $ ` “ | ?
3) 在打印字符串时要加入八进制字符(ASCII相应字符)时,必须在前面加反斜线,否则shell作普通数字处 。
举例: bj=Beijing; echo ”variable\$bj=$bj”//将打印variable $bj = beijing
------------------------------------------------------------------------------------------------------------------------------------------------
Shell特殊变量
在Shell中,预先定义了几个有特殊含义的Shell变量,它们的值只能由Shell根据实际情况进行赋值,而不能通过用户重新设置 。shell的特殊变量包括它的位置和一些系统变量.
(一)常用位置变量:
$#命令行上实际参数的个数,但不包含Shell脚本名 。
$? 上一条命令执行后的返回值(也称作 “退出码”) 。它是一个十进制数 。多数Shell命令执行成功时,则返回值为0;如果执行失败,则返回非0值 。
$$当前进程的进程号 。
$! 上一个后台命令对应的进程号,这是一个由1~5位数字构成的数字串 。
$-由当前Shell设置的执行标志名组成的字符串 。例如:
set -xv这个命令行给Shell设置了标志-x和-v(用于跟踪输出) 。
$*表示在命令行中实际给出的所有实参字符串,它并不仅限于9个实参 。
$@ 它与$*基本功能相同,但是使用时加引号,并在引号中返回每个参数
$0 脚本名称
$1..$9 第N个参数
下面的aaa bbb 为变量名
${aaa:-bbb} 如果$aaa为空或未定义,则取值$bbb.否则取值$aaa
${aaa:+bbb} 如果$aaa非空,则取值$bbb,否则取值为空
${aaa:=bbb} 如果$aaa非空,则取值$aaa,否则取值$bbb而且赋值(aaa=bbb)
${aaa:3} 如果aaa=abcdefg,则${aaa:3}的值为:defg ,相当于substr,计数从0开始
${aaa:3:2} 如上; ${aaa:3:2}取值为: de.相当于substr
${#aaa} 字符串$aaa的长度.
(二)常用系统变量:
$HOME 用户的主目录
$USER 用户名称
$GROUP 用户所属组名
$PATH 默认的搜索路径

推荐阅读