shell特殊变量   字符截取

shell特殊变量

变量含义

$0获取当前执行的shell脚本的脚本名字,如果脚本带有路径,那么就包括路径和脚本名称

$n获取当前执行的shell脚本中的第N个参数.但n=1..9时,但n为0时表示脚本的文件名,如果n大于9,那么就需要用大括号括起来,如${10}。

$#获取当前shell命令行中参数的总个数

"$*"所有的位置参数(作为单个字符串) 获取当前shell脚本的所有参数,将所有的的命令行的参数视为一个字符串。

"[email protected]"所有的位置参数(每个都作为独立的字符串) 获取当前shell脚本的所有参数,将所有的的命令行的每个参数视为独立的字符串。

${#*}传递到脚本中的命令行参数的个数

${#@}传递到脚本中的命令行参数的个数

$?获取执行上一个指令的返回值(0为成功值,非0为失败)返回值

$$获取当前执行脚本的进程ID(PID)

$-传递到脚本中的标志(使用set)

$_在此之前执行的命令或脚本的最后一个参数

$!运行在后台的最后一个作业的进程ID(PID)

* 必须被引用起来,          否则默认为"[email protected]".

dirname  $0    #获取当前脚本路径

basename  $0   #获取当前脚本名称

$* 和 [email protected] 的区别

$* 和 [email protected] 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。

但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"[email protected]" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。

#############################################################

变量子串

表达式含义

${#string}                   $string的长度

${string:position}           $string中,从位置$position开始提取子串

${string:position:length}    $string中,从位置$position开始提取长度为$length的子串

${string#substring}          从变量$string的开头,删除最短匹配$substring的子串

${string##substring}         从变量$string的开头,删除最长匹配$substring的子串

${string%substring}          从变量$string的结尾,删除最短匹配$substring的子串

${string%%substring}         从变量$string的结尾,删除最长匹配$substring的子串

${string/substring/replacement}        使用$replacement,来代替第一个匹配的$substring

${string//substring/replacement}       使用$replacement,代替所有匹配的$substring

${string/#substring/replacement}

如果$string的前缀匹配$substring,        那么就用$replacement来代替匹配到的$substring

${string/%substring/replacement}

如果$string的后缀匹配$substring,        那么就用$replacement来代替匹配到的$substring

时间: 2024-10-19 18:43:48

shell特殊变量   字符截取的相关文章

Shell编程之字符截取命令

AWK命令 awk '条件1(动作1)条件2(动作2)...' 文件名 条件(pattern)一般使用关系表达式作为条件x>10判断x是否大于10x>=10大于等于x<=10小于等于 动作(Action)-格式化输出-流程控制语句 awk使用示例:awk '{printf $1 "\t" $2 "\n"}' awk 'BEGIN{printf "test"}{printf $1}' //在输出语句前输出指定字符串 awk 'EN

Shell编程 之 字符截取命令

1. 字段(列)提取命令:cut  [选项]  文件名 选项:  - f  列号(提取第几列)   - d  分隔符(按照指定分隔符分割列) [[email protected] sh]# cat student.txt ID Name Gender Mark 1 alex male 11 2 boby male 22 3 cyan male 33 4 dauge male 44 [[email protected] sh]# cut -f 2 student.txt # -f 设置列号 Nam

linux shell编程之字符截取命令cut、awk、printf、sed、sort

cut和awk可以提取列,grep提取行 命令名称:cut -f 提取行,-d 分隔符 缺陷:不能使用空格作为分隔符,tab可以,具体分隔符也可以. 命令名称:printf 命令名称:awk 比cut强大的多. sed命令: sort排序:

第10章 Shell编程(2)_字符截取命令

2. 字符截取命令 2.1 cut字段提取命令(grep提取行,cut提取列) (1)cut命令:#cut [选项] 文件名 选项: -f 列号:提取第几列: -d 分隔符:按照指定分隔符分割列,默认是制表符分隔. (2)应用举例 //测试文件(student.txt) ID Name gender PHP Linux MySQL Average 1 ZS M 82 95 86 87.66 2 LS F 74 96 87 85.66 3 WW M 99 83 93 91.66 ①#cut –f

Shell 字符截取命令 awk

awk命令# awk '条件1{动作1} 条件2{动作2}….' 文件名一般使用关系表达式作为条件动作:1.格式化输出 2.流程控制语句 处理cut命令无法截取空格的列 例子:截取出磁盘使用率 df -h | grep "sda1" | awk 'BEGIN{print "this is sda1 hard use persent:"} {print $5}' | cut -f 1 -d "%" BEGIN关键字 a.在所有动作处理之前执行,可在

shell中字符串的截取

shell中字符串的截取介绍9种,以 var=http://www.google.com/test/.html为例 (1)方法一:# 号截取,删除左边字符,保留右边字符. echo ${var#*//} var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符, (*: 匹配0个或多个任意字符) 即删除http:// 结果是 :www.google.com/test.html (2)方法二:## 号截取,删除左边字符,保留右边字符. echo ${var##*

shell编程变量及变量类型

编程语言:包括机器语言.汇编语言.{高级语言[静态语言(编译型语言,一般为强类型变量,需要发布为可执行程序,C.C++.Java,C#)和动态语言(解释型语言,一般为弱类型语言,不需要发布为可执行程序,是一边执行一边解释,Asp,asp.net,php,shell,python.perl)]} 面向对象:解决对象之间的动作,主要适合开发大型程序java,python,c++,perl 面向过程:主要解决过程,主要适合开发小型程序shell,c 变量:是内存空间,是命名的内存空间,存储数据的存储格

shell自定义变量

一.Shell定义变量需要遵循的规则 Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z) 中间不能有空格,可以使用下划线(_) 不能使用标点符号 不能使用bash里的关键字(可用help命令查看保留关键字) 二.shell变量赋值 需要给变量赋值时,可以这么写:   变量名=值 三.shell变量的引用 要取用一个变量的值,只需在变量名前面加一个$ ( 注意: 给变量赋值的时候,不能在"="两边留空格 ).例如:#!/bin/

Shell函数,Shell数组,变量替换

定义函数 function 函数名 { 函数的功能体 ...... } 函数名(){ 函数的功能体 ...... } 如何调用函数 函数名 函数的使用规则? 1)先定义后调用,可以只定义不调用 2)定义放上面,调用放下面 3)函数名区分大小写 4)函数名相同,后定义的生效 5)函数名不准使用特殊符号和关健字 6)在函数体内定义的变量叫局部变量,只能在当前函数内使用 7)在函数体外定义的变量叫全局变量 8)在第二个函数里敲上第一个函数的函数名,这样可以调用第一个函数的变量 例 #!/bin/bas