bash模式匹配运算符##在脚本中不起作用

bash模式匹配运算符##在脚本中不起作用,bash,Bash,以下是本书的一个例子>(O'Reilly) 预期结果应该是long.file.name,因为##删除了与模式匹配的最长前缀/*/ 但是,当我将这三行放在脚本文件中并在bash中运行它时,不会显示任何结果。但是一行一行地输入这两行代码会起作用,并显示预期的结果 我想知道在可执行脚本中是否有与此运算符的使用相关的设置 (在vagrant中使用ubuntu\trusty64。) 谢谢 更新 代码工作正常,代码的其他部分会影响结果 此外 ${path##*/}是一个更好的选择,因为它相当于basenam

以下是本书的一个例子>(O'Reilly)

预期结果应该是
long.file.name
,因为
##
删除了与模式匹配的最长前缀
/*/

但是,当我将这三行放在脚本文件中并在bash中运行它时,不会显示任何结果。但是一行一行地输入这两行代码会起作用,并显示预期的结果

我想知道在可执行脚本中是否有与此运算符的使用相关的设置

(在vagrant中使用ubuntu\trusty64。)

谢谢

更新

代码工作正常,代码的其他部分会影响结果

此外


${path##*/}
是一个更好的选择,因为它相当于
basename
命令

虽然
echo${pathname###/*/}
对我来说很好,但我想你应该试试下面的内容

echo ${pathname##*/}

这意味着您在使用正则表达式的帮助下使用bash来删除/替换从开始到最后一次出现的
/
的所有内容,并使用NULL。

对我来说很好。尝试运行
bash-xscriptname
,然后运行您的问题,复制并粘贴结果作为问题的更新。
echo ${pathname##*/}