运行这个脚本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)