首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

bash shell参数展开(Shell Parameter Expansion):替换变量(variable)中的字符串

在写bash shell脚本时,如果遇到要替换变量中的字符串,首先想到的就是用sed命令,比如下面的示例将变量str中的数字123替换成UUU: $ str=hello,word,123 $ echo...$str | sed -E -e 's/[0-9]/U/g' hello,word,UUUU 上面的例子中用到echo,sed两个命令来实现字符串替换,略显麻烦 其实bash提供了更简单的语法来实现上面的功能...匹配模板(类似正则表达式),据此查找要匹配的字符串 string 对满足pattern匹配条件的字符串进行替换的字符串 pattern 的格式参见 《Pattern-Matching》 https...# 如果只是要替换最后一个出现的数字则这样写 hello,word,U23 $ echo ${str/%[0-9]/U} hello,word,12U 以上雕虫小技都来自于GNU bash shell手册...《Shell-Parameter-Expansion(Shell参数展开)》章节 https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html

3.9K20

Linux中bash shell环境变量

别名 别名是命令的快捷方式。为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用。...重要的是,你将它们用于你经常执行的任务。...可能的例子: alias update='yum update' 这样就可以只是用update来完成yum update的命令操作了  在终端中设置别名的问题是,一旦终端会话关闭...对于 ZSH,资源文件是 .zshrc,对于 bash,它是 .bashrc。 要使别名成为永久别名,你可以将它们放入资源文件中。你可以使用你选择的文本编辑器编辑资源文件。...这里使用 vim: vim $HOME/.zshrc 或者对于 bash: vim $HOME/.bashrc 这样我们在新建一个终端之后,依然可以使用我们创建的命令来完成一些较长的命令操作

1.5K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    bash中的变量

    bash中的变量 变量 3 环境变量 局部变量与环境变量 在bash中,变量是一个用来存储数据的实体。...查看变量中的数据时,需要在变量名前加$号,如果没有加,则echo认为其是一个字符串: $ echo TERM TERM 在echo命令中,变量被双引号" "括起来,会显示变量的数据;如果被单引号' '括起来...在bash中,变量分为环境变量(全局变量)和局部变量。 环境变量可以被子进程读取和修改,父进程对环境变量的修改会传递到子进程,而子进程对变量的修改不会传递到父进程。...bash有一些默认的环境变量,使用env查看: $ env XDG_SESSION_ID=39513 TERM=xterm SHELL=/bin/bash # 省略 在bash中,环境变量的变量名一般全部采用大写字母

    2.2K80

    SHELL(bash)脚本编程一:变量

    非交互式shell启动时(如脚本中),会继承派生出此shell的父shell的环境变量并执行环境变量BASH_ENV的值中所指代的文件。...在命令的执行过程中,变量被其值所替换,在替换的过程中能够对应于各种变换。bash称对变量进行取值的过程为变量替换或变量扩展。 直接取值 #如果值中包含空白字符,赋值时需要用引号引起来表示一个整体。...影响每个启动时加载相应配置文件的bash进程及其子进程。 2、当前shell中自定义并通过内置命令export导出的环境变量。影响当前bash进程及其子进程。...3、当前shell中自定义但未导出的变量。影响当前bash进程及其子进程(不包括需要重新初始化shell的进程)。 4、当前shell中某个函数中通过内置命令local自定义的局部变量。...只影响此函数及嵌套调用的函数和命令。 5、当前shell中某个命令中的临时变量。只影响此命令。 bash变量作用域涉及到子shell和函数的用法,这里暂时不作举例说明,后续文章中会详细叙述。

    2.8K40

    SHELL(bash)脚本编程四:其他扩展

    在之前的文章中我们讲述了变量扩展、数学扩展和命令替换。本篇接着介绍shell中用到的其他扩展。 历史扩展 默认时,在交互式shell环境下,bash允许对历史命令进行记录和扩展。...:gs/string1/string2/ 别名扩展 另一个默认时只能在交互式shell中使用的扩展是别名扩展。 当单词作为简单命令的第一个单词时,bash允许用字符串来替换这个单词(别名)。...但别名的名称并不像变量名的要求那样严格,别名可以包含除了 /,$,反引号,= ,元字符和引用字符之外的任意字符。而别名的替代字符串可以是任何shell输入。...默认时shell脚本中不能使用别名。别名扩展是完全基于文本的,因而别名可以改变shell语法。几乎任何别名的作用,都可以用shell函数来实现。 大括号扩展 大括号扩展是一种生成任意字符串的机制。...shell中以字符~开头的单词(不能被引用)也会被作为一种扩展方式(或者用在变量赋值等号右边)。

    75730

    Shell中的变量

    系统变量 常用系统变量 $HOME、$PWD、$SHELL、$USER等 2.案例实操 (1)查看系统变量的值 $ echo $HOME (2)显示当前Shell中所有变量:set $ set BASH...=/bin/bash BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() 自定义变量 1.基本语法 (1)定义变量:变量=值 (2)撤销变量:unset 变量 (3...(2)等号两侧不能有空格 ​(3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。 ​(4)变量的值如果有空格,需要使用双引号或单引号括起来。...unset readonly B=2 echo $B 2 B=9 -bash: B: readonly variable ​(5)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算 C=1...$D I love b ​(7)可把变量提升为全局环境变量,可供其他Shell程序使用,规则:export 变量名 vim helloworld.sh 在helloworld.sh文件中增加echo

    1.6K20

    Bash shell中bash、sh、source及“.”的区别与联系

    在众多Linux发行版中bash shell 可谓是随处可见。作为众多发行版的首选shell,对于bash shell的学习对我们来说,显得格外重要。...在学习bash shell的过程中,bash、sh、source及英文输入状态下的点号经常交替出现,他们看起来作用都差不多,但是深究下去,他们也有着不小的区别与联系。...查看shell的历史我们可以知道,我们通常所说的bash shell(bash)全称为GNU Bourne-Again SHell。在目前的发行版中,sh已经成为bash的一个软连接。...四、结论 bash与sh在对于脚本执行来说,效果一致,不继承除了当前shell之外的变量值。在无空格“.”且有执行权限的脚本执行中,效果与bash及sh一致。...source及带空格的“.”执行效果一致,且会继承其他shell的变量。 除了不带空格的“.”之外,其他脚本的执行都不需要给脚本增加执行权限。

    1.1K10

    Bash shell 中,select 使用举例

    文章目录 Bash shell 中,select 使用举例 一 背景 二 使用举例 2.1 单独使用...select 2.2 结合 case 使用 三 总结 Bash shell 中,select 使用举例 一 背景 在最近的运维工作中,写了很多脚本,在写这些脚本时发现了一些高效的用法,现将 select...二 使用举例 select 表达式是 bash 的一种扩展应用,擅长于交互式场合。用户可以从一组不同的值中进行选择。...在很多场景中,结合 case 语句使用显得更加方便。上面的脚本中,重新定义了 PS3 的值,默认情况下 PS3 的值是:"#?"。...三 总结 3.1 select 看起来似乎不起眼,但是在交互式场景中却非常有用,各种用法希望大家多多总结。 3.2 文章中还涉及到了 bash shell 中判断值是否在数组中的用法。

    84930

    bash中的字符串引用

    bash中的字符串引用是一件很简单的事情,我们大多数人对此看一眼就能明了,但是今天这个技巧,也许能够帮你在未来节省不少时间。 引用符包括 “(双引号)和 ' (单引号),最基本的用法就是引用字符串。...,我们经常遇到问题的地方是在处理文件名中有空格的文件时。...例如: #/bin/bash for i in $(find .) do     echo $i done 打印的结果是 . ./a.txt ./b.txt ..../quote.sh 一个解决办法是,将原来的字段分隔符(nternal Field Separator )替换为换行,如下: #/bin/bash newline=' ' OIFS=$IFS IFS=$.../bin/bash a="hello \"there big\" world" for i in $a do     echo $i done 程序的输出和我们希望的不太一样,解决的办法是使用eval,

    1.1K10

    Bash shell 中,三种子 shell 实践

    Bash shell 中,三种子 shell 实践 一 背景 让我们先来看一下下面这个简单的例子: #!...脚本开始时,我们使用一个随机数对 test_num 进行了赋值,在当前脚本中的值是 1457 。在三种子 shell 的执行过程中,test_num 传入了子 shell ,依然为 1457 。...三种方式都出奇的的一致,这说明:子 shell 在执行过程中能引用父 shell 的变量,父 shell 中的变量在子 shell 中被修改后不返回父 shell ,作用域只存在于子 shell 中。...简而言之,父 shell 中的值能被子 shell 调用,父 shell 中的变量能被子 shell 修改,子 shell 中的变量值不能传回父 shell 。 继续分析,“& test end....3.2 子 shell 能调用并修改父 shell 的变量值,但是子 shell 的变量值不返回父 shell 中,要牢记。

    44030

    快速学习-Shell中的变量

    第4章 Shell中的变量 4.1 系统变量 常用系统变量 $HOME、$PWD、$SHELL、$USER等 2.案例实操 (1)查看系统变量的值 [atguigu@hadoop101 datas]$...echo $HOME /home/atguigu (2)显示当前Shell中所有变量:set [atguigu@hadoop101 datas]$ set BASH=/bin/bash BASH_ALIASES...(2)等号两侧不能有空格 (3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。 (4)变量的值如果有空格,需要使用双引号或单引号括起来。...中,变量默认类型都是字符串类型,无法直接进行数值运算 [atguigu@hadoop102 ~]$ C=1+2 [atguigu@hadoop102 ~]$ echo $C 1+2 (6)变量的值如果有空格...~]$ D="I love banzhang" [atguigu@hadoop102 ~]$ echo $A I love banzhang (7)可把变量提升为全局环境变量,可供其他Shell程序使用

    47010
    领券