shell脚本中的Unix子字符串?

发布于 2024-08-26 14:45:43 字数 214 浏览 4 评论 0原文

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

I have a string like sample.txt.pgp and I want to return sample.txt in a shell script (but, the string length will vary, so, basically all of the characters before the ".pgp"). Is there a substr function? Like, if I did substr('sample.txt.pgp', -4, 0), is it supposed to return sample.txt? Right now it isn't, so I'm wondering if I have the syntax wrong, or maybe substr isn't a function?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

谈场末日恋爱 2024-09-02 14:45:43
a='sample.txt.pgp'
echo ${a%.*}   # sample.txt (minimal match)
echo ${a%%.*}  # sample     (maximal match)
a='sample.txt.pgp'
echo ${a%.*}   # sample.txt (minimal match)
echo ${a%%.*}  # sample     (maximal match)
骄傲 2024-09-02 14:45:43

您可以使用 basename

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

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

$ FILE=sample.txt.pgp
$ VARIABLE=$(basename "$FILE" .pgp)
$ echo $VARIABLE
sample.txt

You can use basename:

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

Use backticks or $() to put the result in a variable if you want:

$ FILE=sample.txt.pgp
$ VARIABLE=$(basename "$FILE" .pgp)
$ echo $VARIABLE
sample.txt
趁微风不噪 2024-09-02 14:45:43

我相信,文件名sample.txt.pgp返回sample.txt。
(使用反引号)

filename sample.txt.pgp returns sample.txt, I believe.
(use backticks)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文