运行此脚本 bash ./cleanup.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)’
但是如果我直接在终端中运行没问题 rm -rf !(composer.json|.git)
rm -rf !(composer.json|.git)
我试着去掉所有其他行,仍然得到错误。
如何在bash脚本中正确输入?
我猜您的问题是由于从脚本运行时未设置shell扩展glob选项。当您声称它可以在命令行中运行时,您已经以某种方式设置了extglob允许!()全局标记。
extglob
!()
由于bash脚本无论何时以a #!/bin/bash开头都将启动新的子shell,因此在父shell中设置的扩展选项可能不会反映在新shell中。要使其生效,请在爆炸后在脚本中进行设置
bash
#!/bin/bash
#!/bin/bash shopt -s extglob ## going to dir moving stuff rm -rf !(composer.json|.git)