shell脚本特殊变量与变量子串相关知识
一、shell脚本特殊变量
1、shell中常用特殊位置变量说明:
$0 获取当前执行的shell脚本的文件名,如果执行脚本包含了路径,那么就包含了脚本路径
$n 获取当前执行的shell脚本的第n个参数值,n=1-9,表示第1,...,9个参数值,当n大于9时,则用大括号{ } 括起来,如${10},脚本接的参数以空格隔开
$# 获取当前执行的shell脚本后面接的参数总个数
$* 获取当前shell脚本所有传参的参数,不加双引号时,与$@的作用相同,加双引号时,如"$*",则表示将所有参数作为单个字符串,如"$1 $2 $3"
$@ 获取当前shell脚本所有传参的参数,不加双引号时,与$*的作用相同,加双引号时,如"$@",则表示将所有参数作为独立的字符串,相当于"$1" "$2" "$3"
2、shell中常用特殊状态变量说明:
$? 获取执行上一个指令的执行状态返回值(0为成功,非0为失败)
$$ 获取当前执行的shell脚本的进程号(PID)
$! 获取上一个在后台工作的进程的进程号(PID)
$_ 获取在此之前执行的命令或脚本的最后一个参数
二、变量子串相关
1、变量子串常见操作
| ${parameter} |
返回变量$parameter的内容 |
| ${#parameter} |
返回变量$parameter内容的长度(按字符),也适用于特殊变量 |
| ${parameter:offset} |
在变量${parameter}中,从位置offset之后开始提取子串到结尾 |
| ${parameter:offset:length} |
在变量${parameter}中,从位置offset开始提取长度为length的子串 |
| ${parameter#word} |
从变量${parameter}开头删除最短匹配的word子串 |
| ${parameter##word} |
从变量${parameter}开头删除最长匹配的word子串 |
| ${parameter%word} |
从变量${parameter}结尾删除最短匹配的word子串 |
| ${parameter%%word} |
从变量${parameter}结尾删除最长匹配的word子串 |
| ${parameter/pattern/string} |
使用string代替第一个匹配的pattern |
| ${parameter//pattern/string} |
使用string代替所有匹配的pattern |
| ${parameter:-word} |
如果parameter的变量值为空或未赋值,则会返回word字符串并代替变量的值 用途:如果变量未定义,则返回备用的值,防止变量为空值或因未定义而导致异常 |
| ${parameter:=word} |
如果patameter的变量值为空或未赋值,则设置这个变量值为word,并返回其值,位置变量与特殊变量不适用 用途:基本同上一个${parameter:-word},但变量又额外给patameter变量赋值了 |
| ${parameter:?word} |
如果parameter的变量值为空或未赋值,那么word字符串将被作为标准错误输出,否则输出变量的值 用途:用于捕捉由于变量未定义而导致的错误,并退出程序 |
| ${parameter:+word} |
如果parameter的变量值为空或未赋值,则什么都不做,否则word字符串将替代变量的值 用途:用于测试变量是否存在,如果paramete变量r的值为word,则说明paramete变量有值 |
shell脚本特殊变量与变量子串相关知识的更多相关文章
- shell 脚本实战笔记(7)--集群网络相关知识和环境搭建
前言: 对网络相关的知识, 做下笔记. 包括IP地址A/B/C的分类, 静态地址的配置/DNS配置, 以及网卡相关信息查看. *) A/B/C/D类网络地址的划分 IP地址=网络地址+主机地址 或 I ...
- shell脚本中特定符合变量的含义
shell脚本中特定符合变量的含义: $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数.与位置变量不同,此选项参数可超过9个 $$ 脚本运行的当前进程PID号 ...
- shell脚本中一些特殊变量
在shell脚本中,一些常见的特殊变量表示方式还是需要知道的 如下就是一些经常用到的特殊变量表示方法: $0 当前脚本名$1 $2... 传入脚本or函数的参数(大于10需大括号括起来)$ ...
- Shell脚本编写2------有关变量
shell脚本中变量定义方式十分简单,直接将值赋值给变量较好例如 :name="tuanzhang"注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.变量命名 ...
- Bash基础——Shell脚本内部常用环境变量
$@和$*区别 不加引号的时候没区别 #! /usr/bin/bash function print_args_at { printf "%s\n" $@ echo $@ } fu ...
- Shell脚本 (二) 变量与运算符
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 四.Shell 中的变量 1.系统变量 1.1 常用系统变量 $HOME. $PWD. $SHELL . ...
- 利用SHELL脚本修改当前环境变量
转自http://www.chinaunix.net/old_jh/7/21485.html 1.背景 ---- 在日常的工作中,为了设置一大批环境变量,我们通常编辑了一个shell程序,包含了多个的 ...
- shell 脚本编程之特殊变量
$0 当前脚本的文件名$n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2.$# 传递给脚本或函数的参数个数.$* 传递给脚本或函数的所有参数.$@ ...
- shell 脚本学习之内部变量
一,$BASH Bash的二进制程序文件的路径 二,$BASH_ENV 这个环境变量会指向一个Bash的启动文件, 当一个脚本被调用的时候, 这个启动文件将会被读取. 三,$BASH_SUBSHELL ...
随机推荐
- 万能的gitignore文件模版
## .gitignore for Grails 1.2 and 1.3 # .gitignore for maven target/ *.releaseBackup # web applicatio ...
- Web安全测试——常见的威胁攻防
SQL注入 部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患.用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL In ...
- 队列问题非STL解决方案
队列问题非STL解决方案 常年使用STL解决队列问题,以至于严重生疏队列的根本原理... 直到今日 被老师被迫 使用算法原理解决问题,方才意识到我对队列一窍不通... ...直到 经过一系列的坑蒙拐骗 ...
- 永远让比较函数对相等的值返回false
今天在刷OJ的时候,有一道题一直Runtime Error,查错出来是比较函数写挂掉了,但是不知道错误在哪,于是查阅资料:永远让比较函数对相等的值返回false 具体可点击此处查看分析:链接 另外,在 ...
- JavaScript 高级程序设计(第3版)第一章 (js简介)
1.我比js早一年 2.web浏览器是ECMAScript实现的宿主环境之一. 其它实现ECMAScript的宿主环境包括Node和Adobe Flash 3.ECMAScript主要规定js的组成部 ...
- go 学习之fmt包
基本模式fmt 方法可以大致分为 print, scan两类, 根据基础方法可以构建特定方法. Print 将参数写入字符串或io.writer scan 从字符串或 io.Reader 读取指定数据 ...
- P4390 [BOI2007]Mokia 摩基亚
传送门 对于一个询问 $(xa,ya),(xb,yb)$,拆成 $4$ 个询问并容斥一下 具体就是把询问变成求小于等于 $xb,yb$ 的点数,减去小于等于 $xa-1,yb$ 和小于等于 $xb,y ...
- 阿里云云监控agent插件 - Linux版
阿里云云监控agent插件使用指南 1.安装(注意,要以“root”权限运行,复制 sudo后面的就行,别把#也复制进去) #64位 # sudo bash -c "wget -e 'htt ...
- ASP.NET CORE 2.0 模板 (Admin LTE)
原文:https://www.jianshu.com/p/4916f380be66?utm_campaign=hugo&utm_medium=reader_share&utm_cont ...
- shell脚本-巡检内存使用率
#!/bin/bash # by dreamer Q # 巡检内存脚本 #总内存大小 mem_total=`free -m | sed -n '2p' |awk '{print $2}'` #已使用内 ...