命令行参数被截断

时间:2014-09-10 11:37:59

标签: c++ command-line-arguments

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

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

#include <iostream>

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

但是当我像这样运行这个应用程序时

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

我希望应该完全阅读 GFjB5jgaUBVuN5c4fvuHvA == $ YzgEE2VvWCMDImzTM9RYNQ == ,但它会被截断为 GFjB5jgaUBVuN5c4fvuHvA ====

我犯的错误是什么?

1 个答案:

答案 0 :(得分:4)

$NAME被shell替换为shell变量NAME的值。您没有名为$YzgEE2VvWCMDImzTM9RYNQ的shell变量,因此该部分将替换为空字符串。

为避免将$字符视为变量指标,请将参数放在单引号中:

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