当前位置: 首页 > 面试题库 >

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

裴泰平
2023-03-14
问题内容

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


问题答案:

我猜您的问题是由于从脚本运行时未设置shell扩展glob选项。当您声称它可以在命令行中运行时,您已经以某种方式设置了extglob允许!()全局标记。

由于bash脚本无论何时以a
#!/bin/bash开头都将启动新的子shell,因此在父shell中设置的扩展选项可能不会反映在新shell中。要使其生效,请在爆炸后在脚本中进行设置

#!/bin/bash

shopt -s extglob

## going to dir moving stuff
rm -rf !(composer.json|.git)


 类似资料:
  • 问题内容: 我正在尝试与Jenkins构建过程一起运行以下Shell命令 现在构建失败 但是奇怪的是,当直接在Jenkin从站上运行此命令时,它可以正常工作。 如您所见,Jenkins也运行shell命令 。 任何帮助将不胜感激,因为我努力了几个小时 问题答案: 是由启用的扩展模式。目前尚不清楚如何在您的Jenkins从站中启用它,但是将命令添加到脚本中应该可以解决您的问题。

  • 问题内容: 我在Mac上写了一个示例脚本 通过显示Example可以正常工作 当我在RedHat机器上运行此脚本时,它说 意外令牌附近的语法错误’ 我检查了bash是否可用 有人遇到过同样的问题吗? 提前致谢 ! 问题答案: 这可能是文件编码问题。 在不同操作系统和编辑器之间处理文件时遇到了文件类型编码问题,在我的情况下,尤其是在Linux和Windows系统之间。 我建议检查文件的编码,以确保它

  • 我写了一个脚本,脚本的一部分如下: 当我运行这个脚本时,我得到了错误, 1)行尾有问题吗?我在 Windows 上使用记事本编写了脚本,但我在编辑为 UNIX/OSX 格式下启用了 EOL 转换。 2)如果不是行尾,是什么错误? 我正在Redhat Linux操作系统上的bash shell中运行此脚本。

  • 我正在使用一种新的语言,我想它是linux,但老实说,我不知道;我们通过一个名为putty的程序连接到某个服务器来进行编程。作为作业的一部分,我必须创建一个计算器程序,以两个数字和一个运算符作为分段,但我得到了一堆意想不到的令牌错误。我很迷茫,我的课文和我的教授都没有帮助 到目前为止,我只是想得到它,这样我就可以从命令中得到2/calc.sh 1 1但我在第20行中不断遇到意外的标记错误

  • 问题内容: 问题答案: 您要在UNIX命令提示符下键入此命令吗?您应该在python环境中执行此操作,即。在提示符下键入,然后从那里开始。 另外,在Python行的末尾不需要

  • 问题内容: 我想运行一个sh文件: 但是,出现以下错误: 如果我直接在命令行上尝试,它会完美运行。 路径和权限已被检查 知道会发生什么吗? 问题答案: 这不是“ sh文件”,而是 bash 脚本。如果使用来运行它,它将不起作用(因为extixlobs,即您要使用的shell功能,在POSIX sh中不受支持);它需要仅与运行,或用与启动时(因为它)。因此,将其描述为“ sh文件”会产生误导。而且,