语法错误附近的意外标记'('在select文件时在bash脚本中

运行这个脚本bash ./cleanup.bash

 #!/bin/bash ## going to dir moving stuff rm -rf !(composer.json|.git) 

给出错误:

cleanup.bash:第10行:意外标记附近的语法错误'('
cleanup.bash:第10行:'rm -rf!(composer.json | .git)'

但是如果我在terminal直接运行没有问题rm -rf !(composer.json|.git)

我试图剥离所有其他线路,仍然得到错误。

如何正确input这个bash脚本?

我想你的问题是由于从脚本运行时没有设置外壳扩展glob选项。 当你声称它在命令行工作时,你有一些设置允许!()球的extglob标志。

由于每当以#!/bin/bash开始的bash脚本启动一个新的子shell时,在父shell中设置的扩展选项可能不会反映在新的shell中。 为了达到这个效果,把它放在剧本之后的脚本中

 #!/bin/bash shopt -s extglob ## going to dir moving stuff rm -rf !(composer.json|.git)