bash模式匹配运算符##在脚本中不起作用
以下是本书的一个例子>(O'Reilly) 预期结果应该是bash模式匹配运算符##在脚本中不起作用,bash,Bash,以下是本书的一个例子>(O'Reilly) 预期结果应该是long.file.name,因为##删除了与模式匹配的最长前缀/*/ 但是,当我将这三行放在脚本文件中并在bash中运行它时,不会显示任何结果。但是一行一行地输入这两行代码会起作用,并显示预期的结果 我想知道在可执行脚本中是否有与此运算符的使用相关的设置 (在vagrant中使用ubuntu\trusty64。) 谢谢 更新 代码工作正常,代码的其他部分会影响结果 此外 ${path##*/}是一个更好的选择,因为它相当于basenam
long.file.name
,因为##
删除了与模式匹配的最长前缀/*/
但是,当我将这三行放在脚本文件中并在bash中运行它时,不会显示任何结果。但是一行一行地输入这两行代码会起作用,并显示预期的结果
我想知道在可执行脚本中是否有与此运算符的使用相关的设置
(在vagrant中使用ubuntu\trusty64。)
谢谢
更新
代码工作正常,代码的其他部分会影响结果
此外
${path##*/}
是一个更好的选择,因为它相当于basename
命令 虽然echo${pathname###/*/}
对我来说很好,但我想你应该试试下面的内容
echo ${pathname##*/}
这意味着您在使用正则表达式的帮助下使用bash来删除/替换从开始到最后一次出现的
/
的所有内容,并使用NULL。对我来说很好。尝试运行bash-xscriptname
,然后运行您的问题,复制并粘贴结果作为问题的更新。
echo ${pathname##*/}