如何在shell 脚本内拿到一个变量的最后一列:
在shell脚本中,我们经常需要操作字符串变量。有时候,我们需要获取一个变量的最后一列,这在处理文件路径、文件名等场景中很常见。本文将介绍如何在shell脚本内拿到一个变量的最后一列。
方法一:使用awk命令
awk命令是一种处理文本文件的强大工具,可以用来从文件中提取信息。在shell脚本中,我们可以使用awk命令来获取变量的最后一列。
示例代码:
```shell
#!/bin/bash
str="a/b/c/d/e"
last_col=$(echo $str | awk -F'/' '{print $NF}')
echo "最后一列为:$last_col"
```
解释:
- `str="a/b/c/d/e"`:定义一个变量`str`,赋值为`a/b/c/d/e`。
- `echo $str | awk -F'/' '{print $NF}'`:将`str`变量的值通过管道传递给`awk`命令。`-F'/'`指定分隔符为`/`,`'{print $NF}'`表示输出最后一列。
- `last_col=$(echo $str | awk -F'/' '{print $NF}')`:将awk命令的输出结果保存到变量`last_col`中。
- `echo "最后一列为:$last_col"`:输出结果。
运行结果:
```
最后一列为:e
```
方法二:使用basename命令
`basename`命令可以从一个路径中获取文件名或目录名。在shell脚本中,我们可以使用`basename`命令来获取变量的最后一列。
示例代码:
```shell
#!/bin/bash
str="a/b/c/d/e"
last_col=$(basename $str)
echo "最后一列为:$last_col"
```
解释:
- `str="a/b/c/d/e"`:定义一个变量`str`,赋值为`a/b/c/d/e`。
- `basename $str`:使用`basename`命令获取`str`变量的最后一列。
- `last_col=$(basename $str)`:将`basename`命令的输出结果保存到变量`last_col`中。
- `echo "最后一列为:$last_col"`:输出结果。
运行结果:
```
最后一列为:e
```
方法三:使用IFS变量
在shell脚本中,`IFS`(Internal Field Separator)变量是一个分隔符,用于分隔字符串中的字段。我们可以使用`IFS`变量来获取变量的最后一列。
示例代码:
```shell
#!/bin/bash
str="a/b/c/d/e"
IFS='/' read -ra arr <<< "$str"
last_col=${arr[-1]}
echo "最后一列为:$last_col"
```
解释:
- `str="a/b/c/d/e"`:定义一个变量`str`,赋值为`a/b/c/d/e`。
- `IFS='/' read -ra arr <<< "$str"`:将`str`变量的值按照`/`分隔符分割成数组`arr`。`-ra`选项表示将分割结果存储为数组,`<<< "$str"`表示将`str`变量的值作为输入。
- `last_col=${arr[-1]}`:获取数组`arr`的最后一个元素,即变量`str`的最后一列。
- `echo "最后一列为:$last_col"`:输出结果。
运行结果:
```
最后一列为:e
```
综上所述,我们可以使用awk命令、basename命令或IFS变量来获取变量的最后一列。在实际应用中,我们可以根据具体情况选择合适的方法。
如何在shell 脚本内拿到一个变量的最后一列