gpt4 book ai didi

regex - Bash 脚本和正则表达式问题

转载 作者:IT王子 更新时间:2023-10-29 00:31:33 25 4
gpt4 key购买 nike

假设在我的服务器上,我有以下文件:

foo@bar:/var/log/foo$ ls
fooFile1 fooFile2 logFile logFile.1 logFile.2

我想创建一个包含除 logFile.* 之外的所有文件的存档。所以我想出了命令:

foo@bar:~$ tar -czf foo.tar.gz/var/log/foo/!(logFile.*)

而且效果很好!但是,当尝试创建执行相同工作的脚本时:

#!/bin/bash

tar -czf foo.tar.gz /var/log/foo/!(logFile.*)

我遇到了以下错误:

./test.sh: line 3: syntax error near unexpected token '('
./test.sh: line 3: 'tar -czf foo.tar.gz /var/log/foo/!(logFile.*)'

问题与 tar 无关(我使用 ls 而不是 tar 遇到了同样的问题)

我不明白这个错误是从哪里来的。谁能告诉我哪里错了?

在 Ubuntu 12.04 上遇到

最佳答案

将此行放在 shebang 的正下方:

shopt -s extglob

在脚本中启用扩展的 glob 选项。

!(logFile.*) 是扩展的 glob 模式,需要启用 extglob

关于regex - Bash 脚本和正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27822684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com