2014-09-10 114 views
2

我有一个简单的应用程序用于解密某个值。该应用程序将解密的值作为命令行参数,但是我看到我从命令行传递的值正在被截断。命令行参数被截断

这是一个非常简单的代码片段

#include <iostream> 

int main(int argc, char* argv[]) 
{ 
    std::cout << argv[1] << std::endl; 
    return 0; 
} 

但是当我运行这个程序,这样

./a.out GFjB5jgaUBVuN5c4fvuHvA==$YzgEE2VvWCMDImzTM9RYNQ== 

我期望价值GFjB5jgaUBVuN5c4fvuHvA == $ YzgEE2VvWCMDImzTM9RYNQ ==应仔细阅读但它被截断为GFjB5jgaUBVuN5c4fvuHvA ====

我在犯什么错误?

+0

严格地说,因为你仍然得到最后两''==,它是不是真正截断。 – crashmstr 2014-09-10 11:42:54

回答

4

$NAME被shell替换为shell变量NAME的值。您不需要一个名为$YzgEE2VvWCMDImzTM9RYNQ的shell变量,以便将零件替换为空字符串。

为了避免治疗$字符作为变量指标,把单引号中的说法:

./a.out 'GFjB5jgaUBVuN5c4fvuHvA==$YzgEE2VvWCMDImzTM9RYNQ=='