运行此脚本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)
我尝试剥离所有其他行,仍然会收到错误。
如何在bash脚本中正确输入?
答案 0 :(得分:5)
我猜你的问题是由于从脚本运行时没有设置shell扩展的glob选项。当您声明它在命令行中工作时,您可以设置允许extglob
globs的!()
标志。
由于bash
脚本每当以#!/bin/bash
启动时都会启动一个新的子shell,因此父shell中设置的扩展选项可能不会反映在新shell中。要使其生效,请在she-bang之后在脚本中设置
#!/bin/bash
shopt -s extglob
## going to dir moving stuff
rm -rf !(composer.json|.git)