深入了解shell中${ }的一些特异功能

1、 字符串截取2、 取得变量长度3、 取得变量默认值4、 取得变量替换后的结果5、 取得命令执行结果在shell编程中,-5}`表示从`$str`字符串倒数第五个位置开始截取到结尾。

在shell编程中,${ }是一个非常常用的符号,它可以用来引用变量、数组、函数等。但是很多人并不知道,在${ }中还有一些特异的功能,可以帮助我们更加高效地编写代码。下面就让我们来深入了解一下这些特异功能。

1. 字符串截取

在shell中,我们经常需要从一个字符串中截取出部分内容进行操作。例如:

“`

str=”hello world”

echo ${str:0:5} # 输出 hello

这里的`${str:0:5}`表示从`$str`字符串的第0个位置开始,截取长度为5个字符的子串。如果想要从末尾开始计数,则可以使用负数索引:

echo ${str:-5} # 输出 world

这里`${str:-5}`表示从`$str`字符串倒数第五个位置开始截取到结尾。

2. 取得变量长度

有时候我们需要获取一个变量或者数组元素的长度。此时可以使用`${#var}`语法:

var=”hello”

echo ${#var} # 输出 5

arr=(1 2 3)

echo ${#arr[@]} # 输出 3

其中`${#var}`返回变量`$var`所包含字符的数量;而`${#arr[@]}`返回整个数组`$arr`中元素的个数。

3. 取得变量默认值

在shell脚本中,有时候需要使用某个变量的值,但是如果该变量未赋值,则会出现问题。此时可以使用`${var:-default}`语法:

深入了解shell中${ }的一些特异功能

echo ${var:-“hello”} # 如果$var未定义,则输出 hello

这里`${var:-default}`表示如果`$var`未定义,则返回默认值”default”。

4. 取得变量替换后的结果

有时候我们需要将一个字符串中的某一部分替换成另一个字符串。此时可以使用`${var/old/new}`语法:

echo ${str/world/earth} # 输出 hello earth

这里`${str/world/earth}`表示将`$str`字符串中第一个”world”替换成”earth”。

如果想要将所有匹配到的子串都进行替换,则可以使用`${var//old/new}`语法:

str=”hello world, world!”

echo ${str//world/earth} # 输出 hello earth, earth!

5. 取得命令执行结果

在shell脚本中,有时候需要获取某个命令或者函数执行后返回的结果。此时可以使用反引号或者是$( )括起来:

result=`ls -l`

echo $result

result=$(date)

其中反引号和$( )都可以用来执行命令并返回结果。这两种方式都可以使用`${}`语法来引用变量。

总结:

在shell编程中,${ }是一个非常重要的符号,它不仅可以用来引用变量、数组、函数等,还有一些特异的功能。通过掌握这些特异功能,我们可以更加高效地编写shell脚本。