Sell变量的取用、删除、取代与替换
变量的取用:echo
echo $variable
echo $PATH
echo ${PATH}
变量的配置守则
- 变量与变量内容以一个等号’='来连接,如下所示:
myname=VBird - 等号两边不能直接接空格符,如下所示为错误:
myname = VBird 或者 mayname=VBird Tsai - 变量名称只能是英文字母与数字,但是开头字符不能是数字,如下为错误:
2myname=VBird - 变量内容若有空格符可使用双引号"或单引号’将变量内容结合起来,但双引号内的特殊字符如$等,可以包邮原本的特性,如下所示:
var=“lang is $LANG” 则可得 lang is en_US
单引号内的特殊字符则仅为一般字符(纯文本),如下所示:
var=‘long is $LANG’ 则可得 ‘lang is $LANG’ - 可用跳脱字符’'将特殊符号(如[Enter],$,,空格符,'等)变成一般字符;
- 在一串命令中,还需要籍由其他的命令提供的信息,可以使用反单引号 `命令`或$ 命令。特别注意,哪个`是键盘上方的数字键1左边的那个按键,而不是单引!!!
例如想要取得核心版本的配置:
version=$(uname -r)再echo $version 可得2.6.18-128.el6 - 若该变量为扩增变量内容时,则可用"$变量"或者${变量}累加内容,如下所示:
PATH="$PATH":/home/bin
PS.我一般用${变量},再变量拼接的时候尤其重要,name=$nameyes,name的内容时$nameyes这个变量;name=${name}yes,可以$name和yes拼接起来 - 若该变量需要再其他子程序运行,则需要以export来变量变成环境变量:
exprot PATH - 通常大写字符为系统默认变量,自行配置变量可以是哟了那个小写字符,方便判断(纯粹依靠使用者兴趣与嗜好);
- 取消变量的方法为使用unset: unset 变量名称 例如取消myname的配置:
unset myname
变量内容的删除、取代与替换
范例一:先让小写的path自定义变量配置的PATH内容相同
path=${PATH}
echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
范例二:假设要将钱连个目录删除掉,如何显示?
echo ${paht#/*kerberos/bin:}
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
解释
范例三:我想要删除前面所有的目录,仅保留最后一个目录
echo ${path##/*:}
/root/bin
多加了一个#变成##之后,变成”删除掉最长的那个数据“
- #:符合取代文字的"最短的"那一个
- ##:符合取代文字的”最长的“那一个
如果想要"从后面向前删除变量的内容"呢?这个时候就要使用百分号(%)符号了
范例四:我想要删除最后面那个目录,亦即从:到bin为止的字符串
echo ${path%:*bin}
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
范例五:;那如果我只想要保留第一个目录呢?
echo ${path%%:*bin}
/usr/kerberos/sbin
了解删除功能后,接下来谈谈取代吧
范例六:将path的变量内容内的sbin取代成大写SBIN:
echo ${path/sbin/SBIN}
/usr/kerberos/SBIN:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
这部分就容易理解多了!关键词在于连个斜线,两斜线中间的是旧字符串,后面的是新字符串
echo ${path//sbin/SBIN}
/usr/kerberos/SBIN:/usr/kerberos/bin:/usr/local/SBIN:/usr/local/bin:/SBIN:/bin:/usr/SBIN:/usr/bin:/root/bin
若果是两条斜线,那么就变成所有符合的内容都会被取代
总结
变量配置方式 | 说明 |
---|---|
${变量#关键词} ${变量##关键词} |
若变量内容从头开始的数据符合"关键词",则将符合的最短数据删除 若变量内容从头开始的数据符合"关键词",则将符合的最长数据删除 |
${变量%关键词} ${变量%%关键词} |
若变量内容从尾向前的数据符合"关键词",则将符合的最短数据删除 若变量内容从尾向前的数据符合"关键词",则将符合的最长数据删除 |
${变量/旧字符串/新字符串} ${变量//旧字符串/新字符串} |
若变量内容符合"旧字符串",则"第一个旧字符串会被新字符串取代" 若变量内容符合"旧字符串" 则 “全部的旧字符串会被新字符串取代” |
变量的测试与内容替换
在某些时刻我们常常需要"判断"某个变量是否存在,若变量存在则使用既有的配置,若变量不存在则给予一个常用的配置。
范例一:测试一下是否存在 username 这个变量,若不存在则基于username内容为root
echo $username<==由于出现空白,所以 username 可能不存在,也可能是空字符串username=${username-root}echo $usernameroot <==因为 username 没有配置,所以主动给予名为 root 的内容。username="vbird tsai" <==主动配置 username 的内容username=${username-root}echo $usernamevbird tsai <==因为 username 已经配置了,所以使用旧有的配置而不以 root 取代
范例二:若 username 未配置或为空字符串,则将 username 内容配置为 root
username=""username=${username-root}echo $username<==因为 username 被配置为空字符串了!所以当然还是保留为空字符串!username=${username:-root}echo $usernameroot <==加上『 : 』后若变量内容为空或者是未配置,都能够以后面的内容替换!
变量配置方式 | str 没有配置 | str 为空字符串 | str 已配置非为空字符串 |
var=${str-expr} | var=expr | var= | var=$str |
var=${str:-expr} | var=expr | var=expr | var=$str |
var=${str+expr} | var= | var=expr | var=expr |
var=${str:+expr} | var= | var= | var=expr |
var=${str=expr} |
str=expr var=expr |
str 不变 var= |
str 不变 var=$str |
var=${str:=expr} |
str=expr var=expr |
str=expr var=expr |
str 不变 var=$str |
var=${str?expr} | expr 输出至 stderr | var= | var=$str |
var=${str:?expr} | expr 输出至 stderr | expr 输出至 stderr | var=$str |
转自:https://www.cnblogs.com/shirley130912/p/4301769.html
Sell变量的取用、删除、取代与替换相关推荐
- 05 linux shell脚本 变量的取用echo;变量的设置和修改;变量的使用规范以及示例
linux shell 变量 设置 修改 规则 变量的取用: echo 变量的设置和修改 linux 变量 规则 变量 就是以一组文字或符号等,来取代一些配置或者是一串保留的数据! 变量的取用: ec ...
- R语言vtreat包的mkCrossFrameCExperiment函数交叉验证构建数据处理计划并进行模型训练、通过显著性进行变量筛选(删除相关性较强的变量)、构建多变量模型、转化为分类模型、模型评估
R语言vtreat包的mkCrossFrameCExperiment函数交叉验证构建数据处理计划并进行模型训练.通过显著性进行变量筛选(删除相关性较强的变量).构建多变量模型.转化为分类模型.模型评估 ...
- python代码实现文本编辑器删除空格,替换标点,英文大写转换功能
text = input("请粘贴您需要转换的文本\n") function = int(input("请输入您想实现的功能:删除空格.中英文标点替换.英文单词功能大写. ...
- php unset 静态变量,php如何删除静态变量
php删除静态变量的方法:可以通过重新定义的方式进行删除,如[$temp = null].不可以使用unset()函数删除静态变量,因为该函数只是销毁了局部变量. PHP设置了静态变量,如果需要销毁这 ...
- python数组加入新元素_Python之list添加新元素、删除元素、替换元素
现在,班里有3名同学: >>> L = ['Adam', 'Lisa', 'Bart'] 今天,班里转来一名新同学 Paul,如何把新同学添加到现有的 list 中呢? 第一个办法是 ...
- JS 动态创建元素、删除元素、替换元素、修改元素
动态创建元素 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <ti ...
- Java 字符串常用操作(比较、查找位置、删除字符、替换字符串、反向输出、是否存在、分割字符串、大小写转换,区域比较、拼接字符串)
字符串比较 public class StringCompareEmp{public static void main(String args[]){String str = "Hello ...
- python删除、替换字符串某字符后的字符串(删除字符串、替换字符串、strip、split、rstrip、lstrip、replace)
删除字符串某字符后的字符串 url = "phpmyadmin.css.php?3Fserver=1&lang=en&token=39e3d96974667d6163351c ...
- 偏置面命令_UG10.0同步建模之移动面、删除面、替换面详解
---同步建模之移动面--- 同步建模在NX中的应用广泛,主要对对实体的面进行操作,比如,旋转.对称.移动等等,是基于面的操作,往往对建模操作意义重大,有些时候,帮助大家快速完成建模,而不需要利用草图 ...
最新文章
- 敏捷开发框架_他山之石-敏捷开发管理框架在设计项目中的应用
- linux覆盖和追加
- 如何将自己的代码放到github上
- 前端学习(1710):前端系列javascript之uniapp介绍
- php get请求_《细说PHP》第四版 样章 第23章 自定义PHP接口规范 10
- python引用模块的私有变量_python 使用不同方法导入模块,模块中私有变量的使用区别...
- 取数游戏【dp+博弈】
- redhat官网操作文档查找
- 一百行代码爬取漫画喵
- html excel导出的路径,html 导出多个excel表格数据-如何将html页面中的表格导出到excel表格...
- VMware 虚拟机怎么识别不了ISO文件
- android 锯齿
- 【广告算法工程师入门 32】从直播答题,跳一跳,抢红包等产品策略扯到用户受益商业变现
- Allegro贴片元件封装制作
- 我的世界java手机版怎么调按键_《我的世界》按键设置 pc版快捷按键代码大全...
- Qt中pro、pri文件的语法介绍
- 华为近场通讯nfc在哪里打开_华为手机怎么使用NFC功能?华为手机使用NFC交通卡功能教程...
- android q测试机型,华为公布安卓Q首批适配机型:一共有8款
- c++和cuda混合编程记录(一)
- 一些笔记本电脑的推荐
热门文章
- java用数组显示周期性波形,常见的周期性变化波形有正弦波、三角波和矩形波。...
- python cnn 实例_在Keras中CNN联合LSTM进行分类实例
- 关于做淘宝客的一点心得
- OriginLab.OriginPro.v8.6.SR3.Cracked-EAT
- 【项目分享】使用 PointNet 进行点云分割
- osmconvert转换OpenStreetMap pbf文件至osm等格式矢量
- 使用网口转换器更换网线后无法上网
- 2021年化工自动化控制仪表考试报名及化工自动化控制仪表新版试题
- android手机性能优化,安卓手机性能怎么优化 安卓手机性能方法汇总
- IFS认证咨询,关于家用和个人护理产品安全和质量的发展和评估项目