shell编程(二)--变量
发布日期:2021-07-17 15:49:25 浏览次数:6 分类:技术文章

本文共 1855 字,大约阅读时间需要 6 分钟。

“shell编程”的上一篇文章很多知识点都没有提及,如果确实想学习shell脚本的各位看官们,推荐《Advanced Bash-Scripting Guide》,链接:

1. 内置变量

内置变量包括$BASH, $FUNCNAME, $IFS, $REPLY, $*, $@, 其中最后两个的功能是类似的。

$BASH:Bash脚本解释器的路径;

$FUNCNAME:当前函数的名字;

$IFS:内部域分隔符,这个变量用来标明字符串边界,$IFS默认为空白(空格,制表符,换行符),但它也是可以被修改的,例如:

#!/bin/bashoutput_args(){  for arg  do echo "[$arg]"  done}echo; echo "IFS=\" \""echo "-------"IFS=" "var=" a  b c   "output_args $varecho; echo "IFS=:"echo "-----"#这里用“:”替换了上面的“ ”IFS=:var=":a::b:c:::"output_args $varechoexit 0

$REPLY:当没有参数变量提供给read命令时,这个变量会作为默认变量提供给read命令,也可以用于select菜单,但是只提供所选择变量的编号,而不是变量本身的值。在个别版本的Bash中,并不支持$REPLY;

$*, $@:列出所有的参数。$* 所有位置的参数都被看作是一个单词,$@ 每个参数都是一个独立的引用字符串。

2. 字符串

我们可以使用awk来处理字符串,Bash脚本也可以调用awk的字符串操作功能来代替自己的内建字符串操作。

#!/bin/bashString=1234abcd# 注意不同的字符串索引系统:# Bash的第一个字符是从'0'开始记录的.# Awk的第一个字符是从'1'开始记录的.echo ${String:2:4} # 位置 3, 4 个字符长# 34ab# awk中等价于${string:pos:length}的命令是substr(string,pos,length).echo | awk '{    print substr("'"${String}"'",3,4)      # 34ab}'#  使用一个空的"echo"通过管道传递给awk一个假的输入,#+ 这样就不必提供一个文件名给awk.exit 0

3. 子串的删除及替换

${#var}

字符串长度(变量$var的字符个数)。对于数组来说,${#array}表示的是数组中第一个元素的长度。

${var#Pattern}, ${var##Pattern}

从变量$var的开头删除最短或最长匹配$Pattern的子串。“#”表示匹配最短,“##”表示匹配最长。

${var%Pattern}, ${var%%Pattern}

从变量$var的结尾删除最短或最长匹配$Pattern的子串。“%”表示匹配最短,“%%”表示匹配最长。

${var:pos}

变量var从位置pos开始扩展, 也就是pos之前的字符都丢弃。

${var:pos:len}

变量var从位置pos开始,并扩展len个字符。

${var/Pattern/Replacement}

使用Replacement来替换变量var中第一个匹配Pattern的字符串。

${var//Pattern/Replacement}

全局替换。所有在变量var匹配Pattern的字符串,都会被替换为Replacement。

${var/#Pattern/Replacement}

如果变量var的前缀匹配Pattern,那么就使用Replacement来替换匹配到Pattern的字符串。

${var/%Pattern/Replacement}

如果变量var的后缀匹配Pattern,那么就使用Replacement来替换匹配到Pattern的字符串。

4. 变量类型

使用declare或者typeset可以指定变量的类型。

类型 说明
-r 只读
-i 整形
-a 数组
-f 函数
-x export
例如:

#!/bin/bashfunc1 (){  echo This is a function.}declare -f        # 列出前面定义的所有函数.exit 0
为了进一步了解shell,下一篇文章将实现一个简单的Linux系统信息监控脚本。

转载地址:https://blog.csdn.net/huzhiyuan0000000/article/details/74564362 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:ClusterONE算法详解及优化
下一篇:shell编程(一)--入门

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月01日 17时54分57秒