使用模式匹配!("file1")
在bash脚本中不起作用,但在命令行上起作用。
例如:
ls !("file1"|"file2")
这将列出目录中除
file1
和file2
之外的所有文件。在脚本中执行该行时,将显示此错误:
./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
虽然我想您在这里只是将其用作占位符。