是否可以在一个命令中使用#和%运算符进行左右bash修剪?

是否可以在一个命令中使用#和%运算符进行左右bash修剪?,bash,filepath,trim,Bash,Filepath,Trim,有可能重写这段代码吗 $ x="/foo/somefile.txt" $ y=${x%.*} $ echo ${y##*/} somefile 没有变量y 我的意思是像一个命令,左,右修剪在同一时间 谢谢 您不能连锁扩展,但在这种特殊情况下,您仍然可以通过单个扩展实现您的预期: /$ x="/foo/somefile.txt" /$ shopt -s extglob /$ echo ${x//@(*\/|.*)/} somefile 因此,它将用空字符

有可能重写这段代码吗

$ x="/foo/somefile.txt"
$ y=${x%.*}
$ echo ${y##*/}
somefile
没有变量y

我的意思是像一个命令,左,右修剪在同一时间


谢谢

您不能连锁扩展,但在这种特殊情况下,您仍然可以通过单个扩展实现您的预期:

/$ x="/foo/somefile.txt"
/$ shopt -s extglob
/$ echo ${x//@(*\/|.*)/}
somefile
因此,它将用空字符串替换两个模式:
*\/
*

是否可以在一个命令中使用#和%运算符进行左右bash修剪


不,这在bash中是不可能的。

注意,这将把
/foo/somefile.txt.gz
变成
somefile
,而问题中的两步修改将把它变成
somefile.txt