变量的取用: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. 面试官:Java 到底是值传递还是引用传递?
  2. vs2013编译apr时遇到的疑难杂症
  3. 文献学习(part76-A)--To cluster, or not to cluster: An analysis of clusterability methods
  4. 支付宝生活号异步通知地址_异步生活。
  5. 尚学堂java 答案解析 第六章
  6. JavaScript学习(八十三)—JavaScript书写位置、注释、以及输入输出语句
  7. asp.net上传图片自动生成缩略图功能代码
  8. hfss和matlab,matlab-hfss联合仿真教程(初学)--第一节(利用MATLAB编写脚本建立HFSS工程)...
  9. 百度推广 计算机访问url,百度推广助手批量设置完整的访问URL的方法
  10. MIMO 从入门到精通 -科普篇2 - MIMO and Beamforming
  11. 有一个很好的PS滤镜,可以做出非常漂亮的抽丝效果,我一定要保存下来
  12. 贴片功率电感封装尺寸与性能
  13. iOS 深入理解framework
  14. MySQL 中的系统库之sys 系统库
  15. Mac上cpu 跑17个卷集层的resent
  16. 只因小黑子的HTML入土过程第四章
  17. anaconda python下载math库_Anaconda下载及安装及查看安装的Python库用法
  18. qt 3d 飞行模拟
  19. 微信公总号开发(二)
  20. MATLAB视频转换

热门文章

  1. 假如ACMer有技能,你会选择哪个职业..
  2. log4j日志输出到web项目指定文件夹
  3. C# 理解Thread.Sleep()方法
  4. 练习三:利用条件语句实现计数分频时序电路
  5. 里加一列为1_风味人间2:大厨做的拔丝苹果,拉丝1米长,根根分明
  6. 看过《非你莫属》那期,因为刘俐俐,说说陈鸥
  7. 【C++机考1反思】铁匠铺结构化设计问题
  8. android机开应用速度慢,Android机跑好慢 学会这秘密五招手机瞬间加速!
  9. Poly-YOLO:更快,更精确的检测(主要解决Yolov3两大问题,附源代码)
  10. JavaScript (上篇)