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

dg *_*ght 3 command-line

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

mv !(hd) "/mediafolder/sd/${PWD##*/}"
Run Code Online (Sandbox Code Playgroud)

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

syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)

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

ste*_*ver 5

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

#!/bin/bash

shopt -s extglob

mv -t "/mediafolder/sd/${PWD##*/}" -- !(hd)
Run Code Online (Sandbox Code Playgroud)