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

Shell 编程(一):Shell 变量的高级用法

,将符合最短的数据删除 ${变量名%%匹配规则} 变量尾部进行规则匹配,将符合最长的数据删除 ${变量名/旧字符串/新字符串} 变量内容符合旧字符串则,则第一个旧字符串会被新字符串取代 ${变量名//...使用${string:position}, 索引计数是0开 例子 获取字符串长度 通过expr获取字符串长度 获取字符索引位置 获取串长度 抽取字符串串 索引抽取字符串串 #!...# var2 第 10 位开始提取长度为 5 的串 substr2=${var2:10:5} echo "substr2 = $substr2" # var2 的右边第 5 开始提取串 substr3...5 开始提取长度为 5 的串 substr5=${var2:-5:5} echo "substr5 = $substr5" # 5 开始,匹配长度为 10(tips:使用expr,索引计数是1...Copy 命令替换 方法 语法格式 方法一 `command` 方法二 $(command) `` 和()两者是等价的,但推荐初学者使用(),易于掌握;缺点是极少数UNIX可能不支持 (()

26520

Shell 编程(一):Shell 变量的高级用法

变量替换 语法 说明 ${变量名#匹配规则} 变量开头进行规则匹配,将符合最短的数据删除 ${变量名##匹配规则} 变量开头进行规则匹配,将符合最长的数据删除 ${变量名%匹配规则} 变量尾部进行规则匹配...,将符合最短的数据删除 ${变量名%%匹配规则} 变量尾部进行规则匹配,将符合最长的数据删除 ${变量名/旧字符串/新字符串} 变量内容符合旧字符串则,则第一个旧字符串会被新字符串取代 ${变量名//...}, 索引计数是0开 例子 获取字符串长度 通过expr获取字符串长度 获取字符索引位置 获取串长度 抽取字符串串 索引抽取字符串串 #!...# var2 第 10 位开始提取长度为 5 的串 substr2=${var2:10:5} echo "substr2 = $substr2" # var2 的右边第 5 开始提取串 substr3...5 开始提取长度为 5 的串 substr5=${var2:-5:5} echo "substr5 = $substr5" # 5 开始,匹配长度为 10(tips:使用expr,索引计数是1

1.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

shell脚本编程之路1

支持字符串模式匹配使用=~操作符时甚至支持shell的正则表达式 字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,比如[[ hello == hell?...四种模式字符串提取和替换: #第一种:对大括号的以逗号分割的文件列表进行拓展。如 touch {a,b}.txt 结果为a.txt b.txt。...${var##pattern} #如果是,就从命令行把variable的内容去掉 左边 最长的匹配模式 # 字符串提取和替换 ${var:num} #shell在var中提取第num...个字符到末尾的所有字符 # 若num为正数,左边0处开始 # 若num为负数,右边开始提取字串,但必须使用在冒号后面加空格或一个数字或整个num加上括号,如${var: -2}、${var: 1-...表示$var字符串的第$num1个位置开始提取长度为$num2的串,不能为负数。

2.7K20

一文掌握shell脚本的基本语法

02. shell特殊字符 特殊字符 功能 说明 注意 # 1.注释 2.声明命令解释器的类型 3.某些特定的模式匹配操作使用 1.注释方面:一般是行首以 #作为开头 2.声明解释器类型一般是在脚本第一行...Bash变量:不区分类型,都是字符串,不允许进行数值计算,除非变量包含数字。 如果变量的值中间有空格,则使用引号(单引号或双引号均可)扩起来。 5.4 环境变量 会影响用户接口和shell的行为。...语法 说明 ${string:position} 在string位置position开始提取串 ${string:position:length} 在string位置position开始提取...14.2 read命令 -- 控制台读取输入 参考:https://www.computerhope.com/unix/bash/read.htm 屏幕标准输入读取一行。...如果是需要忽略大小写时,可使用gi 几个具体的使用场景:vim命令行模式操作和直接操作文本是相同原理 16.1 替换/修改字符串 # 全局替换(vim亦可),且忽略大小写 sed -i "s/Hello

3.9K00

Linux Shell编程入门

若直接输入可执行文件名,可能提示找不到该命令 [root@master shell]# hello -bash: hello: command not found 2、Shell变量 2.1 定义与使用...说明:单独使用变量时,{}括号可以省略,当在表达式时需要加上,标示变量范围;输出字符串时,${}表达式将被计算, 看起来,很像EL表达式。...echo $h1 $h2 #字符串长度 string="abcd" echo ${#string} echo `expr length $string` #提取字符串 string="alibaba...一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式使用星号 * 捕获该值,再执行后面的命令。 [root@master shell]# vi case #!...当n>=10时,需要使用 11、输入输出重定向 Unix 命令默认标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示。

3K10

Linux shell编程常用方法总结

删除指定字符串 ${var#pattern} 将 $var 的值左侧删除与模式 pattern 匹配的最短字符串并返回 ${var##pattern} 将 $var 的值左侧删除与模式 pattern...匹配的最长字符串并返回 ${var%pattern} 将 $var 的值右侧删除与模式 pattern 匹配的最短字符串并返回 ${var%%pattern} 将 $var 的值右侧删除与模式 pattern...变量值替换 ${var/pattern/replace} 将$var的值第一个与模式pattern匹配的串替换为 replace 并返回。...${var/pattern} 将$var的值第一个与模式pattern匹配的串删除并返回。...变量值截取 ${var:pos} 返回 $var 值 pos 开始(到结尾)的字符串。 ${var:pos:len} 返回 $var 值 pos 开始长度为 len 的字符串

2.7K90

Shell特殊字符

获取字符串变量var的长度 string="abcd";echo ${#string} #输出4 21 ${:} 字符串提取,用法${var:num}。...若num为正数,左边0处开始;若num为负数,右边开始提取字串,但必须使用在冒号后面加空格或一个表达式或整个num加上括号,如${var: -2}、${var:1-4}或${var:(-2)} a=...查找给定的模式pattern,如果找到,就从命令行把variable的内容去掉左边最短的匹配模式。...在Bash version 4+ 的时候,还可以使用[;;&], [;&] 51 / 斜杠。路径的分隔符,路径仅有一个斜杆表示根目录,以斜杆开头的路径表示根目录开始的路径。...括号的命令将会新开一个shell顺序执行,所以括号变量不能够被脚本余下的部分使用。括号多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。(2)用于初始化数组。

5.1K10

shell极简教程(二)

单引号 str='this is a string' 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串变量是无效的; 单引号字串不能出现单引号(对单引号使用转义符后也不行)。...echo $greeting $greeting_1 获取字符串长度 string="abcd" echo ${#string} #输出 4 提取字符串 string="alibaba is a great...case 语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令。...取值后面必须为关键字 in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。...取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式使用星号 * 捕获该值,再执行后面的命令。

5.3K70

shell各种括号的作用()、(())、]、{}「建议收藏」

括号的命令将会新开一个shell顺序执行,所以括号变量不能够被脚本余下的部分使用。括号多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。...②支持字符串模式匹配使用=~操作符时甚至支持shell的正则表达式。字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,比如[[ hello == hell? ]],结果为真。...与小括号的命令不同,大括号内的命令不会新开一个shell运行,即脚本余下部分仍可使用括号内变量。括号内的命令间用分号隔开,最后一个也必须有分号。...若num为正数,左边0处开始;若num为负数,右边开始提取字串,但必须使用在冒号后面加空格或一个数字或整个num加上括号,如{var: -2}、{var:1-3}或{var:(-2)}。...第二种模式:{var:num1:num2},num1是位置,num2是长度。表示var字符串的第num1个位置开始提取长度为num2的串。不能为负数。

3.8K40

shell编程知识点集锦

使用的过程,我们会看到有人用双引号将带待查找模式包围,也有人用单引号将带待查找模式包围,再使用字符串的时候,也有些人既不用单引号也不用双引号。那么单引号和双引号的区别是什么呢?...但是使用sh命令则会开启新的shell进程来执行指定的脚本,这样的话,父进程变量进程中就无法访问。参考如下代码: first.sh内容如下,访问了second.sh变量second。...我们如何让进程访问父进程变量呢?可以使用export命令。...字符串提取: ${file:0:5}:提取最左边的5个字节:/dir1 ${file:5:5}:提取第5个字节右边的连续5个字节:/dir2 变量值里的字符串作替换: ${file/dir/path...匹配正则表达式 shell编程,我们可以使用括号运算符[[]]和=~来判断字符串是否匹配给定的正则表达式,例如匹配以lvlv结尾的字符串: filelist="lvlvcheck dablelvlv

1.5K10

Linux Shell 的 ()、(())、]、{} 怎么用是不是还傻傻分不清?

括号的命令将会新开一个shell顺序执行,所以括号变量不能够被脚本余下的部分使用。括号多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。 ②命令替换。...②支持字符串模式匹配使用=~操作符时甚至支持shell的正则表达式。字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,比如[[ hello == hell? ]],结果为真。...[[ ]] 匹配字符串或通配符,不需要引号。 ③使用[[ ... ]]条件判断结构,而不是[ ... ],能够防止脚本的许多逻辑错误。...若num为正数,左边0处开始;若num为负数,右边开始提取字串,但必须使用在冒号后面加空格或一个数字或整个num加上括号,如${var: -2}、${var:1-3}或${var:(-2)}。...第二种模式:${var:num1:num2},num1是位置,num2是长度。表示$var字符串的第$num1个位置开始提取长度为$num2的串。不能为负数。

3.9K20

一文入门Shell编程

基本语法unsetunset 注释: 使用 # 符号表示注释。 # 这是一条注释 变量: Shell 变量无需声明,直接赋值使用。...grep: 在文件搜索模式。 grep "pattern" filename sed: 流编辑器,用于文本替换。...调试脚本unsetunset set -x: 在脚本添加 set -x 可以启用调试模式,显示每个命令执行的详细信息。 #!.../bin/bash set -x echo "Hello, World!" unsetunset10. 进阶主题unsetunset 环境变量: Shell 使用环境变量来保存系统信息和配置。...正则表达式: Shell 支持正则表达式,用于字符串匹配和处理。 文件权限和用户管理: Shell 脚本可以用来管理文件权限和用户账户。 异常处理: 使用 trap 命令来捕获和处理脚本的异常。

9710

BashShell变量

var} 3.5 删除环境变量Bash Shell 使用 unset 命令来删除环境变量。 unset var 和修改全局变量类似,在进程删除全局变量也无法反映到父进程。...【注】有些 Linux 发行版使用了「可拆卸认证模块」(PAM),在这种情况下,PAM 文件会在 Bash Shell 启动之前处理,这些文件可能会包含环境变量。...默认的 Shell 环境变量 Bash Shell 源自早期的 Unix Bourne Shell,因此继承了 Unix Bourne Shell 定义的一些默认的环境变量。...,在使用正则表达式的比较运算符 =~ 进行肯定匹配(positive match)时,包含了匹配到的模式和子模式 BASH_SOURCE 含有当前正在执行的 Shell 函数所在源文件名的数组变量 BASH_SUBSHELL...设置对字符串排序时用的排序规则 LC_CTYPE 决定如何解释出现在文件名扩展和模式匹配的字符 LC_MESSAGES 在解释前面带有 $ 的双引号字符串时,该环境变量决定了所采用的语言环境设置 LC_NUMERIC

2.4K30

npm、npx说起,到shell

在一般的linux系统当中(如redhat),使用sh调用执行脚本相当于打开了bash的 POSIX 标准模式 $ ll -h /bin/sh lrwxrwxrwx. 1 root root 4 10月...环境自带的变量,进入 Shell 时已经定义好了,可以直接使用 # 示所有环境变量 $ env 1.Bash 变量名区分大小写,HOME和home是两个不同的变量 2.Bash 没有数据类型的概念,所有的变量值都是字符串...输出变量 $foo $ export foo=bar # 新建 Shell $ bash # 读取 $foo $ echo $foo bar # 修改继承的变量 $ foo=baz # 退出 Shell...如果将脚本放在环境变量$PATH指定的目录,就不需要指定路径了。因为 Bash 会自动到这些目录,寻找是否存在同名的可执行文件。...:脚本需要在执行过程,由用户提供一部分数据,这时可以使用read命令;它将用户的输入存入一个变量,方便后面的代码使用

3.8K20

Shell脚本字符串的一些常用操作

11 字符串串 ${string:position:length} 在${string}, 位置${position}开始提取长度为${length}的串 例子: string='How are...) 符号 含义解析 ${string#substring} 变量${string}的开头, 删除最短匹配${substring}的串 ${string##substring} 变量${string...}的开头, 删除最长匹配${substring}的串 ${string%substring} 变量${string}的结尾, 删除最短匹配${substring}的串 ${string%%substring...} 变量${string}的结尾, 删除最长匹配${substring}的串 我们可以总结一下规律: 换句话来说,#总是表示左边算起,%总是表示右边算起;一个符号表示最短匹配,两个符号表示最长匹配...echo ${f%/*} 当然,Shell编程我们也可以使用basename和dirname两个命令分别提取文件名和父目录名称: # basename提取当前文件或者当前目录名称,输出结果为:空间数据处理环境搭建

1.2K30

简单&基础shell操作_转发分享

= $b ],要需要在方括号与变量以及变量与运算符之间也需要有括号, 否则为错误的。(亲测过) 关系运算符: 只支持数字,不支持字符串,除非字符串的值是数字。...image Shell字符串 单引号的限制: 单引号里的任何字符都会原样输出,单引号字符串变量是无效的; 单引号字串不能出现单引号(对单引号使用转义符后也不行)。..." " 获取字符串长度: string="abcd" echo ${#string} #输出 4 提取字符串: string="alibaba is a great company" echo ${string...取值后面必须为关键字 in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。...如果无一匹配模式使用星号 * 捕获该值,再执行后面的命令。

1K10

BashShell字符串

提取、替换 对于字符串 file=/dir1/dir2/dir3/my.file.txt,还可以使用 ${} 语法来进行提取和替换: ${file: start: length} 语法: ${...:/dir2/dir3/my.file.txt ${file: -8: 4}:提取右往左数第 8 个字节右边的连续 4 个字节:file ${file: -8}:提取右往左数第 8 个字节右边的所有字节...str[@]}:得到数组每一个元素的下标(each index of elements) 【注】此数组非 Bash Shell 的数组变量,只是为了方便理解而称呼,其本质还是单变量Bash Shell...2.5.2 使用 ${} 语法 如果不想修改 IFS 环境变量,可以使用上文中的 ${} 语法将长字符串分隔符替换为空白符,这样就可以使用默认的 IFS 环境变量。...bash shell 将其识别为重定向符号;此外,对于 -z 和 -n 选项,字符串必须要用 "" 包裹,不然可能导致奇怪的问题,建议 [] 语法中用到的字符串变量都用 "" 包裹。

48310
领券