有人可以解释一下我在脚本中遇到的这个错误吗

有人可以解释一下我在脚本中遇到的这个错误吗

我正在尝试创建一个脚本,我可以将其设置为 cron 作业,将我所有的点文件添加到我设置为 github 存储库的文件夹中,然后每天晚上推送它们。我的脚本如下。

cp ~/.!(|.|ssh|bash_logout|bash_history) ~/dotfiles

git add .

git commit -m "Test commit"

git push origin master

我收到以下错误:

./update_dotfiles.sh: line 3: syntax error near unexpected token `('
./update_dotfiles.sh: line 3: `cp ~/.!(|.|ssh|bash_logout|bash_history) ~/dotfiles'

当我运行该命令时,该命令运行良好,只是在作为 shell 脚本的一部分运行时出现错误。该脚本正在运行 bash,

答案1

您需要在中指定 bash shell舍邦为此,请执行以下操作:

#!/bin/bash

当 bash 运行不带 shebang 的脚本或带有 shebang 的#!/bin/sh脚本时POSIX模式这有一些限制。

您还需要启用extglobshell 选项bash以使其理解!(...)通配模式:

shopt -s extglob

相关内容