我正在尝试运行一个 C++ 应用程序,我将一些命令行参数传递给它,如下所示:
./startServer -ip 10.78.242.4 tcpip{ldap=no;port=2435}
应用程序正在崩溃,因为它无法获得正确的端口。在网上搜索,我发现“;”被视为命令字符 ( Semicolon on command line in linux) 的结尾,因此之后的所有内容都将被忽略。我也明白把它放在引号内会很好。但是,我不想将这种将参数放在引号中的限制强加给用户。所以,我想知道有没有办法处理“;” argv 数组中的字符?
最佳答案
分号分隔两个命令,因此您的命令行等同于
./startServer -ip 10.78.242.4 tcpip{ldap=no
port=2435}
您的应用程序永远不会知道分号或第二个命令的任何信息,这些将完全由 shell 处理。您需要使用反斜杠转义冒号或将其括在引号中。其他可能导致类似问题的字符包括:$,\-#`'":*?()&|
复杂的字符串更容易从文件或通过标准输入传递。
关于c++ - 在 Linux 中检测分号作为命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50713388/