是否可以在一个命令中使用#和%运算符进行左右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
。