深入了解shell中${ }的一些特异功能
1、 字符串截取2、 取得变量长度3、 取得变量默认值4、 取得变量替换后的结果5、 取得命令执行结果在shell编程中,-5}`表示从`$str`字符串倒数第五个位置开始截取到结尾。
- 本文目录导读:
- 1、 字符串截取
- 2、 取得变量长度
- 3、 取得变量默认值
- 4、 取得变量替换后的结果
- 5、 取得命令执行结果
在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中${ }的一些特异功能缩略图 深入了解shell中${ }的一些特异功能](https://www.72715.net/wp-content/uploads/2023/05/3532d9d09da6d788a34fcaf4a0b024cd.png)
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脚本。