热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Bash中对变量的操作方法

文章标题:Bash中对变量的操作方法。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

1. 条件变量替换:

    Bash Shell可以进行变量的条件替换,既只有某种条件发生时才进行替换,替换条件放在{}中.

    (1) ${value:-word}

    当变量未定义或者值为空时,返回值为word的内容,否则返回变量的值.

    (2) ${value:=word}

    与前者类似,只是若变量未定义或者值为空时,在返回word的值的同时将

    word赋值给value
    (3) ${value:?message}

    若变量以赋值的话,正常替换.否则将消息message送到标准错误输出(若

    此替换出现在Shell程序中,那么该程序将终止运行)

    (4) ${value:+word}

    若变量以赋值的话,其值才用word替换,否则不进行任何替换

    (5) ${value:offset}

    ${value:offset:length}

    从变量中提取子串,这里offset和length可以是算术表达式.

    (6) ${#value}

    变量的字符个数 (变量的字符个数,并不是变量个数)

    (7) ${value#pattern}
    ${value##pattern}

    去掉value中与pattern相匹配的部分,条件是value的开头与pattern相匹配

    #与##的区别在于一个是最短匹配模式,一个是最长匹配模式.

    ( ${value%pattern}

    ${value%%pattern}

    于(7)类似,只是是从value的尾部于pattern相匹配,%与%%的区别与#与##一样

    (9) ${value/pattern/string}

    ${value//pattern/string}

    进行变量内容的替换,把与pattern匹配的部分替换为string的内容,/与//的区

    别与上同

    注意:上述条件变量替换中,除(2)外,其余均不影响变量本身的值

    2.变量的算术运算

    在Bash Shell中,只能进行两个整数间的运算,其结果仍为整数.要进行算术运算,需要使用let命令,语法为:

    let expr

    expr是一个包含项和操作符的表达式,项可以是一个变量或是一个整数常数,当使用整数常数时,其默认为十进制整数,用户可以用radio#number来指定其它形式的整数,其中radio定义了整数是几进制表示的,number是该整数的值.若radio>10,那么数字字符可从0-9和A-Z.

    在表达式中支持的操作符及其含义为:

    +,-,*,/,% 加,减,乘,除,取模

    >>,<<,&,^,| 左移,右移,位与,位异或,位或

    ?: 三元运算符.与C语言中的定义一致
    ~ 取补码

    !,>=,<=,>,<,==,!=,&&,||

    =,+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=

    表达式中也可以使用括号.括号或运算优先级的定义与一般计算机语言中的相同.

    let命令具有返回值.

    当计算结果(若有多个表达式时,以最后一个为准)为0时,返回值为1,否则为0.

    当表达式中含有shell的特殊字符(如|)时,需要用引用符('或")将其引用起来.

    使用let时还需要注意的时,对于let x+y这样的式子,shell虽然计算了x+y的值

    但却将结果丢弃,若不想这样,可以使用let sum=x+y将x+y的结果保存在变量sum中

    另外还可以使用((和))操作符取代let命令,而且这样的话,还可以省去对算术表达式的引用,如果想返回表达式的值,则需用$(())的格式.

    if的条件中,“=”用于比较字符串;“-eq”用于比较整型数。

  

[1] [2] 下一页


推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 单片机与PLC:入门难易度及应用场景对比
    本文探讨了单片机和PLC的学习难度及各自的应用场景,帮助读者根据自身需求选择合适的学习路径。单片机是一种微控制器,而PLC(可编程逻辑控制器)则专为工业自动化设计。两者各有优劣,适合不同的应用领域。 ... [详细]
  • 装饰器是一种用于在不修改原函数代码的情况下,动态地添加功能的工具。它允许你在函数执行前后插入额外的逻辑,从而增强或改变函数的行为。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • 本文详细探讨了C语言中指针的概念,特别是指针在变量和数组中的应用。通过实例讲解,帮助读者更好地掌握指针的使用方法。 ... [详细]
  • 本文介绍了几种不同的编程方法来计算从1到n的自然数之和,包括循环、递归、面向对象以及模板元编程等技术。每种方法都有其特点和适用场景。 ... [详细]
  • Python入门:第一天准备与安装
    本文详细介绍了Python编程语言的基础知识和安装步骤,帮助初学者快速上手。涵盖Python的特点、应用场景以及Windows环境下Python和PyCharm的安装方法。 ... [详细]
  • 本文探讨了高质量C/C++编程的最佳实践,并详细分析了常见的内存错误及其解决方案。通过深入理解内存管理和故障排除技巧,开发者可以编写更健壮的程序。 ... [详细]
  • 在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ... [详细]
  • 本文详细介绍了C语言中的指针,包括其基本概念、应用场景以及使用时的优缺点。同时,通过实例解析了指针在内存管理、数组操作、函数调用等方面的具体应用,并探讨了指针的安全性问题。 ... [详细]
  • C语言标准及其GCC编译器版本
    编程语言的发展离不开持续的维护和更新。本文将探讨C语言的标准演变以及GCC编译器如何支持这些标准,确保其与时俱进,满足现代开发需求。 ... [详细]
  • 解析SQL查询结果的排序问题及其解决方案
    本文探讨了为什么某些SQL查询返回的数据集未能按预期顺序排列,并提供了详细的解决方案,帮助开发者理解并解决这一常见问题。 ... [详细]
  • C语言基础入门:7个经典小程序助你快速掌握编程技巧
    本文精选了7个经典的C语言小程序,旨在帮助初学者快速掌握编程基础。通过这些程序的实践,你将更深入地理解C语言的核心概念和语法结构。 ... [详细]
  • 本文探讨了如何使用自增和自减运算符遍历二维数组中的元素。通过实例详细解释了指针与二维数组结合使用的正确方法,并解答了常见的错误用法。 ... [详细]
  • Python 学习是否需要先掌握 C 语言?
    Python 是一门非常适合编程入门的语言,很多人疑惑是否需要先学习 C 语言才能更好地掌握 Python。本文将详细探讨这个问题,并为初学者提供专业的建议。 ... [详细]
author-avatar
漫天星雨2000
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有