在意外令牌附近的语法错误'('在选择文件时在bash脚本中

时间:2017-11-15 09:59:33

标签: linux bash terminal

运行此脚本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脚本中正确输入?

1 个答案:

答案 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)