Linux 环境命令行参数
linux environment command line arguments
我是一名Windows程序员,现在我正在学习在Linux环境中编程,我使用LinuxMint15。
我遇到了一个"奇怪"的问题,即命令行参数不是我键入的内容。该程序非常简单:
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("cmd line=");
for(int i=0;i<argc;i++){
printf("%s ", argv[i]);
}
printf("n");
return 0;
}
然后编译并运行它,它按照我想要的方式工作:
roy@xx ~ $ gcc -o cl test_cl.cpp
roy@xx ~ $ ./cl 1 2
cmd line=./cl 1 2
但是当我在最后输入*时,它列出了文件夹中的所有文件名.....:
roy@xx ~ $ ./cl 1 2 *
cmd line=./cl 1 2 Public Template Video Picture Docs Desktop cl test_cl.cpp test.txt untitled
发生了什么事?
大多数 Linux shell 都特别处理字符?
和*
。特别是,它们用于通配模式以与文件名匹配。在这种情况下,shell 会将*
扩展到当前目录中的所有文件,然后将该列表作为命令行参数发送到程序。如果你想要一个文字*
,你需要用*
转义它或用'*'
引用它。
相关文章:
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- 使用 C++ 将命令行参数拆分为参数/向量
- 如何在OMNET++中添加专门的命令行参数?
- 如何在不传递命令行参数的情况下在 c++ 中设置环境变量
- atoi() 在应用于大型命令行参数时会产生不正确的值
- 是否可以在命令行中将输入参数传递给可执行文件
- 命令行参数,cant 或两个变量
- 在 Windows 中使用 boost::p rogram_options 从命令行参数读取 Unicode 字符
- 如何在 Android/NDK 上将命令行参数从 gradlew.bat 传递到 Clang
- 编写一个将 LLVM IR 文件作为命令行参数的程序
- 通过命令行参数获取llvm ir文件时面临问题
- 有没有办法根据命令行参数定义数组大小?运行时与编译时实例化?
- 从命令行获取参数时出现问题
- 如何在不使用文件扩展名的情况下使用命令行参数打开C++中的文本文件?
- 命令行参数在不到 3 个 LOC 中 int?
- 在命令行参数中使用引号
- 使用参数 + stdout + stderr 从命令行调用 MFC 应用程序
- 在VS2013中使用devenv (C++)传递命令行参数argv
- 二进制数据作为命令行参数