首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取shell中字符串的最后一个字符?

如何获取shell中字符串的最后一个字符?
EN

Stack Overflow用户
提问于 2013-07-09 15:55:22
回答 11查看 214.3K关注 0票数 150

我编写了以下几行代码来获取字符串的最后一个字符:

代码语言:javascript
复制
str=$1
i=$((${#str}-1))
echo ${str:$i:1}

它适用于abcd/

代码语言:javascript
复制
$ bash last_ch.sh abcd/
/

It abcd*不适用于

代码语言:javascript
复制
$ bash last_ch.sh abcd*
array.sh assign.sh date.sh dict.sh full_path.sh last_ch.sh

It 列出当前文件夹中的文件。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2013-07-09 15:58:27

这就是为什么你需要引用变量的原因之一:

代码语言:javascript
复制
echo "${str:$i:1}"

否则,bash展开变量,在本例中,在打印输出之前执行globbing。最好将参数引用到脚本中(如果您有匹配的文件名):

代码语言:javascript
复制
sh lash_ch.sh 'abcde*'

另请参阅bash reference manual中的展开顺序。变量在文件名扩展之前进行扩展。

要获得最后一个字符,您应该只使用-1作为索引,因为负索引从字符串的末尾开始计数:

代码语言:javascript
复制
echo "${str: -1}"

冒号(**:**)后的空格是必需的。

如果没有空间,这种方法是行不通的。

票数 129
EN

Stack Overflow用户

发布于 2014-02-08 03:02:59

Per @perreal,引用变量很重要,但因为我在评论中找到了解决手头问题的更简单的方法之前,我读了这篇文章5次……

代码语言:javascript
复制
str='abcd/'
echo "${str: -1}"

输出:/

代码语言:javascript
复制
str='abcd*'
echo "${str: -1}"

输出:*

感谢在上面参与的每一个人;我在整个帖子中适当地添加了+1!

票数 205
EN

Stack Overflow用户

发布于 2015-10-01 01:52:43

我知道这是一个非常古老的帖子,但没有人提到哪个对我来说是最干净的答案:

代码语言:javascript
复制
echo -n $str | tail -c 1

请注意,-n只是为了使回显在末尾不包含换行符。

票数 44
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17542892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档