如何解决意外标记“(”附近的语法错误

如何解决意外标记“(”附近的语法错误

我有一个包含一行代码的脚本 ab_script.sh

mv !(hd) "/mediafolder/sd/${PWD##*/}"

user@debianpc:/mediafolder/sd/01051 dance$当我在文件夹中运行脚本时

syntax error near unexpected token `('

如果我在终端中复制此行并将其作为命令运行,则一切都正常。

答案1

!(hd)是一个扩展的 glob- 您可能在交互式 shell 中默认启用了扩展通配符,但需要shopt -s extglob在脚本中明确启用它。您可能还想考虑使用以下命令-t TARGET形式mv

#!/bin/bash

shopt -s extglob

mv -t "/mediafolder/sd/${PWD##*/}" -- !(hd)

相关内容