热门标签 | 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
    Linuxnetfilter与VRF实验环境如下图所示:配置如下:#!binbashsudoipnetnsaddns1sudoiplinkaddns1veth1typevethpe ... [详细]
  • 本文详细介绍了在Luat OS中如何实现C与Lua的混合编程,包括在C环境中运行Lua脚本、封装可被Lua调用的C语言库,以及C与Lua之间的数据交互方法。 ... [详细]
  • 深入解析C语言中的关键字及其分类
    本文将全面介绍C语言中的关键字,并按照功能将其分为数据类型关键字、控制结构关键字、存储类别关键字和其他关键字四大类,旨在帮助读者更好地理解和运用这些基本元素。C语言中共有32个关键字。 ... [详细]
  • 对于编程爱好者而言,理解PHP的强大功能及其在Web开发中的应用至关重要。本文旨在分享作者在学习PHP过程中的实际经验和技巧,帮助初学者找到学习编程的有效途径。 ... [详细]
  • 本文将深入探讨C语言中的位操作符——按位与(&)、按位或(|)和按位异或(^),通过具体示例解释这些操作符如何在位级别上对数据进行操作。 ... [详细]
  • 本题要求实现一个名为fun的函数,该函数的功能是从给定的字符串s中移除所有ASCII码为偶数值的字符,并将剩下的字符组成的新字符串存储在由t指向的数组中。 ... [详细]
  • JUnit下的测试和suite
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 在Linux系统中,许多应用程序以源代码的形式提供,这给安装带来了挑战。本文旨在介绍一种简化源码软件安装流程的方法,帮助用户更加轻松地完成安装。 ... [详细]
  • 汇编语言:编程世界的始祖,连C语言都敬畏三分!
    当C语言还在萌芽阶段时,它首次接触到了汇编语言,并对其简洁性感到震惊。尽管汇编语言的指令极其简单,但它却是所有现代编程语言的基础,其重要性不言而喻。 ... [详细]
  • c语言二元插值,二维线性插值c语言
    c语言二元插值,二维线性插值c语言 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • 实现系统调用
    实现系统调用一、实验环境​本次操作还是基于上次编译Linux0.11内核的实验环境进行操作。环境如下:二、实验目标​通过对上述实验原理的认识,相信 ... [详细]
  • 编译原理中的语法分析方法探讨
    本文探讨了在编译原理课程中遇到的复杂文法问题,特别是当使用SLR(1)文法时遇到的多重规约与移进冲突。文章讨论了可能的解决策略,包括递归下降解析、运算符优先级解析等,并提供了相关示例。 ... [详细]
  • 本文提供了一个使用C语言实现的顺序表区间元素删除功能的完整代码示例。该程序首先初始化一个顺序表,然后根据用户输入的数据进行插入操作,最后根据指定的区间范围删除相应的元素,并输出最终的顺序表。 ... [详细]
  • Android开发:巧妙运用ViewStub写出类似Tab选项卡
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
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社区 版权所有