我有一个简单的应用程序,用于解密某些值。应用程序将解密的值作为命令行参数,但我看到我从命令行传递的值被截断。
这是一个非常简单的代码段
#include <iostream>
int main(int argc, char* argv[])
{
std::cout << argv[1] << std::endl;
return 0;
}
但是当我像这样运行这个应用程序时
./a.out GFjB5jgaUBVuN5c4fvuHvA==$YzgEE2VvWCMDImzTM9RYNQ==
我希望应该完全阅读 GFjB5jgaUBVuN5c4fvuHvA == $ YzgEE2VvWCMDImzTM9RYNQ == ,但它会被截断为 GFjB5jgaUBVuN5c4fvuHvA ====
我犯的错误是什么?
答案 0 :(得分:4)
$NAME
被shell替换为shell变量NAME
的值。您没有名为$YzgEE2VvWCMDImzTM9RYNQ
的shell变量,因此该部分将替换为空字符串。
为避免将$
字符视为变量指标,请将参数放在单引号中:
./a.out 'GFjB5jgaUBVuN5c4fvuHvA==$YzgEE2VvWCMDImzTM9RYNQ=='