使用模式匹配!("file1")在bash脚本中不起作用,但在命令行上起作用。

例如:

ls  !("file1"|"file2")

这将列出目录中除file1file2之外的所有文件。

在脚本中执行该行时,将显示此错误:
./script.sh: line 1: syntax error near unexpected token `('
./script.sh: line 1: ` ls  !("file1"|"file2") '

不管使用什么rm -v !("file1")。发生相同的错误。这是怎么回事,为什么这在脚本中不起作用?

最佳答案

默认情况下,您尝试使用的扩展glob语法是关闭的;您必须在要使用它的每个脚本中分别启用它。

shopt -s extglob

Scripts should not use ls 虽然我想您在这里只是将其用作占位符。

10-06 06:29