1

我有一个像 sample.txt.pgp 这样的字符串,我想在 shell 脚本中返回 sample.txt(但是,字符串长度会有所不同,所以,基本上是“.pgp”之前的所有字符)。有 substr 函数吗?就像,如果我这样做了substr('sample.txt.pgp', -4, 0),它应该返回 sample.txt 吗?现在不是,所以我想知道我的语法是否错误,或者 substr 不是函数?

4

3 回答 3

3
a='sample.txt.pgp'
echo ${a%.*}   # sample.txt (minimal match)
echo ${a%%.*}  # sample     (maximal match)
于 2010-03-24T20:44:57.417 回答
2

您可以使用basename

$ basename sample.txt.pgp .pgp
sample.txt

如果需要,请使用反引号或$()将结果放入变量中:

$ FILE=sample.txt.pgp
$ VARIABLE=$(basename "$FILE" .pgp)
$ echo $VARIABLE
sample.txt
于 2010-03-24T21:08:28.217 回答
0

filename sample.txt.pgp 我相信返回 sample.txt。(使用反引号)

于 2010-03-24T20:44:30.410 回答