jan*_*anw 5 linux bash terminal
运行此脚本 bash ./cleanup.bash
#!/bin/bash
## going to dir moving stuff
rm -rf !(composer.json|.git)
Run Code Online (Sandbox Code Playgroud)
给出错误:
cleanup.bash:第10行:意外令牌附近的语法错误'('
cleanup.bash:第10行:'rm -rf!(composer.json | .git)'
但如果我在终端直接运行没问题 rm -rf !(composer.json|.git)
我尝试剥离所有其他行,仍然得到错误.
如何在bash脚本中正确输入?
我想你的问题是由于从脚本运行时没有设置shell扩展的glob选项.当你声称它在命令行中工作时,你已经设置了extglob允许!()globs 的标志.
由于bash脚本每次启动时都会#!/bin/bash启动一个新的子shell,因此父shell中设置的扩展选项可能不会反映在新shell中.为了使其生效,请在剧本之后将其设置在脚本中
#!/bin/bash
shopt -s extglob
## going to dir moving stuff
rm -rf !(composer.json|.git)
Run Code Online (Sandbox Code Playgroud)