变量的取用:echo

echo $variable
echo $PATH
echo ${PATH}

变量的配置守则

  1. 变量与变量内容以一个等号’='来连接,如下所示:
    myname=VBird
  2. 等号两边不能直接接空格符,如下所示为错误:
    myname = VBird 或者 mayname=VBird Tsai
  3. 变量名称只能是英文字母与数字,但是开头字符不能是数字,如下为错误:
    2myname=VBird
  4. 变量内容若有空格符可使用双引号"或单引号’将变量内容结合起来,但双引号内的特殊字符如$等,可以包邮原本的特性,如下所示:
    var=“lang is $LANG” 则可得 lang is en_US
    单引号内的特殊字符则仅为一般字符(纯文本),如下所示:
    var=‘long is $LANG’ 则可得 ‘lang is $LANG’
  5. 可用跳脱字符’'将特殊符号(如[Enter],$,,空格符,'等)变成一般字符;
  6. 在一串命令中,还需要籍由其他的命令提供的信息,可以使用反单引号 `命令`或$ 命令。特别注意,哪个`是键盘上方的数字键1左边的那个按键,而不是单引!!!
    例如想要取得核心版本的配置:
    version=$(uname -r)再echo $version 可得2.6.18-128.el6
  7. 若该变量为扩增变量内容时,则可用"$变量"或者${变量}累加内容,如下所示:
    PATH="$PATH":/home/bin
    PS.我一般用${变量},再变量拼接的时候尤其重要,name=$nameyes,name的内容时$nameyes这个变量;name=${name}yes,可以$name和yes拼接起来
  8. 若该变量需要再其他子程序运行,则需要以export来变量变成环境变量:
    exprot PATH
  9. 通常大写字符为系统默认变量,自行配置变量可以是哟了那个小写字符,方便判断(纯粹依靠使用者兴趣与嗜好);
  10. 取消变量的方法为使用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变量的取用、删除、取代与替换相关推荐

  1. 05 linux shell脚本 变量的取用echo;变量的设置和修改;变量的使用规范以及示例

    linux shell 变量 设置 修改 规则 变量的取用: echo 变量的设置和修改 linux 变量 规则 变量 就是以一组文字或符号等,来取代一些配置或者是一串保留的数据! 变量的取用: ec ...

  2. R语言vtreat包的mkCrossFrameCExperiment函数交叉验证构建数据处理计划并进行模型训练、通过显著性进行变量筛选(删除相关性较强的变量)、构建多变量模型、转化为分类模型、模型评估

    R语言vtreat包的mkCrossFrameCExperiment函数交叉验证构建数据处理计划并进行模型训练.通过显著性进行变量筛选(删除相关性较强的变量).构建多变量模型.转化为分类模型.模型评估 ...

  3. python代码实现文本编辑器删除空格,替换标点,英文大写转换功能

    text = input("请粘贴您需要转换的文本\n") function = int(input("请输入您想实现的功能:删除空格.中英文标点替换.英文单词功能大写. ...

  4. php unset 静态变量,php如何删除静态变量

    php删除静态变量的方法:可以通过重新定义的方式进行删除,如[$temp = null].不可以使用unset()函数删除静态变量,因为该函数只是销毁了局部变量. PHP设置了静态变量,如果需要销毁这 ...

  5. python数组加入新元素_Python之list添加新元素、删除元素、替换元素

    现在,班里有3名同学: >>> L = ['Adam', 'Lisa', 'Bart'] 今天,班里转来一名新同学 Paul,如何把新同学添加到现有的 list 中呢? 第一个办法是 ...

  6. JS 动态创建元素、删除元素、替换元素、修改元素

    动态创建元素 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <ti ...

  7. Java 字符串常用操作(比较、查找位置、删除字符、替换字符串、反向输出、是否存在、分割字符串、大小写转换,区域比较、拼接字符串)

    字符串比较 public class StringCompareEmp{public static void main(String args[]){String str = "Hello ...

  8. python删除、替换字符串某字符后的字符串(删除字符串、替换字符串、strip、split、rstrip、lstrip、replace)

    删除字符串某字符后的字符串 url = "phpmyadmin.css.php?3Fserver=1&lang=en&token=39e3d96974667d6163351c ...

  9. 偏置面命令_UG10.0同步建模之移动面、删除面、替换面详解

    ---同步建模之移动面--- 同步建模在NX中的应用广泛,主要对对实体的面进行操作,比如,旋转.对称.移动等等,是基于面的操作,往往对建模操作意义重大,有些时候,帮助大家快速完成建模,而不需要利用草图 ...

最新文章

  1. 敏捷开发框架_他山之石-敏捷开发管理框架在设计项目中的应用
  2. linux覆盖和追加
  3. 如何将自己的代码放到github上
  4. 前端学习(1710):前端系列javascript之uniapp介绍
  5. php get请求_《细说PHP》第四版 样章 第23章 自定义PHP接口规范 10
  6. python引用模块的私有变量_python 使用不同方法导入模块,模块中私有变量的使用区别...
  7. 取数游戏【dp+博弈】
  8. redhat官网操作文档查找
  9. 一百行代码爬取漫画喵
  10. html excel导出的路径,html 导出多个excel表格数据-如何将html页面中的表格导出到excel表格...
  11. VMware 虚拟机怎么识别不了ISO文件
  12. android 锯齿
  13. 【广告算法工程师入门 32】从直播答题,跳一跳,抢红包等产品策略扯到用户受益商业变现
  14. Allegro贴片元件封装制作
  15. 我的世界java手机版怎么调按键_《我的世界》按键设置 pc版快捷按键代码大全...
  16. Qt中pro、pri文件的语法介绍
  17. 华为近场通讯nfc在哪里打开_华为手机怎么使用NFC功能?华为手机使用NFC交通卡功能教程...
  18. android q测试机型,华为公布安卓Q首批适配机型:一共有8款
  19. c++和cuda混合编程记录(一)
  20. 一些笔记本电脑的推荐

热门文章

  1. java用数组显示周期性波形,常见的周期性变化波形有正弦波、三角波和矩形波。...
  2. python cnn 实例_在Keras中CNN联合LSTM进行分类实例
  3. 关于做淘宝客的一点心得
  4. OriginLab.OriginPro.v8.6.SR3.Cracked-EAT
  5. 【项目分享】使用 PointNet 进行点云分割
  6. osmconvert转换OpenStreetMap pbf文件至osm等格式矢量
  7. 使用网口转换器更换网线后无法上网
  8. 2021年化工自动化控制仪表考试报名及化工自动化控制仪表新版试题
  9. android手机性能优化,安卓手机性能怎么优化 安卓手机性能方法汇总
  10. IFS认证咨询,关于家用和个人护理产品安全和质量的发展和评估项目