提问人:miken32 提问时间:5/30/2017 更新时间:5/30/2017 访问量:1379
检查字符串的最后一个字符
Check last character of a string
问:
这种抨击有内置的 POSIX 等价物吗?
my_string="Here is a string"
last_character=${my_string: -1}
我一直看到这样的东西被推荐,但它们看起来像是黑客。
last_character=$(echo -n "$my_string" | tail -c 1)
last_character=$(echo -n "$my_string" | grep -o ".$")
但是,也许黑客就是我们对 POSIX shell 的全部?
答:
0赞
Harini
5/30/2017
#1
num=`echo $my_string | wc -c `
let num-=1
last=`echo $my_string | cut -c$num`
echo $last
assumpting: (its lastchar here) 是您需要最后一个字符的字符串。希望这对您有所帮助。
评论
1赞
Benjamin W.
5/30/2017
如果输入字符串包含换行符,则此操作中断。
6赞
zwer
5/30/2017
#2
如果你真的必须这样做,只有POSIX:
my_string="Here is a string"
last_character=${my_string#"${my_string%?}"}
它的作用基本上是从开头删除没有最后一个字符,只剩下最后一个字符。$my_string
$my_string
评论
0赞
miken32
5/30/2017
谢谢,仍然是一个黑客,但至少这是一个只有参数扩展的黑客!
0赞
zwer
5/30/2017
@miken32 - 当然是黑客,但胜过管道和调用其他命令。它的通用性要低得多,但这就是 POSIX。
1赞
JooMing
5/30/2017
#3
如果您只需要检查最后一个字符是什么,然后对其值进行操作,那么构造是一种可移植的方式来表达它。case ... esac
评论