我猜您的问题是由于从脚本运行时未设置shell扩展glob选项。当您声称它可以在命令行中运行时,您已经以某种方式设置了extglob
允许!()
全局标记。
由于bash
脚本无论何时以a#!/bin/bash
开头都将启动新的子shell,因此在父shell中设置的扩展选项可能不会反映在新shell中。要使其生效,请在爆炸后在脚本中进行设置
#!/bin/bash
shopt -s extglob
## going to dir moving stuff
rm -rf !(composer.json|.git)