小编Tho*_*ard的帖子

Bash脚本和正则表达式问题

让我们想象一下,在我的服务器上,我有以下文件:

foo@bar:/var/log/foo$ ls
fooFile1 fooFile2 logFile logFile.1 logFile.2
Run Code Online (Sandbox Code Playgroud)

我想创建一个包含每个文件的存档,但是logFile.*.所以我想出了命令:

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

它工作正常!但是,在尝试创建执行相同工作的脚本时:

#!/bin/bash

tar -czf foo.tar.gz /var/log/foo/!(logFile.*)
Run Code Online (Sandbox Code Playgroud)

我遇到了以下错误:

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

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

我不明白这个错误来自哪里.谁能告诉我哪里错了?

在Ubuntu 12.04上遇到过

regex linux bash ubuntu-12.04

7
推荐指数
1
解决办法
67
查看次数

为什么这里没有内存泄漏

我试图回答这个问题,所以我决定创建以下简单的测试用例,以便OP可以自己看到内存泄漏.

#include<iostream>

class MyObject
{
public:
   MyObject(){std::cout << "creation of my object" << std::endl;}
   virtual ~MyObject(){std::cout << "destruction of my object" << std::endl;}
};

void processMyObject(MyObject foo)
{
}

int main()
{
   processMyObject(*new MyObject());
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我编译了它:

g++ test.cpp -o test
Run Code Online (Sandbox Code Playgroud)

然后,我看到一个意外的输出:

creation of my object
destruction of my object
Run Code Online (Sandbox Code Playgroud)

我绝对不知道这里发生了什么.有谁可以向我解释一下?

PS:我使用的是g ++ 4.6.3

c++ memory-leaks

0
推荐指数
1
解决办法
106
查看次数

标签 统计

bash ×1

c++ ×1

linux ×1

memory-leaks ×1

regex ×1

ubuntu-12.04 ×1