c - 在 Linux 上将 * 作为命令行参数传递时的奇怪行为

标签 c linux shell command-line-arguments glob

<分区>

我有这个非常简单的 C 程序:

#include <stdio.h>
int main (int argc, char ** argv){
  printf ("%s\n",argv[1]);
}

像这样在 Linux/bash 上运行时:

./a.out *

我得到以下输出:

a.c

为什么?

最佳答案

因为 * 是一个 glob 字符,它扩展到当前目录中的文件列表。

如果你想传递文字 * 你需要引用或转义它:

./a.out '*'

关于c - 在 Linux 上将 * 作为命令行参数传递时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21613415/

相关文章:

c - memcpy 函数有些奇怪

linux - Linux 中的并行线程

linux - 比较使用变量时 Awk 在 bash 脚本中不工作

c - 将输入部分存储在不同的变量中

c - 从 "char x[n]"转换为 "char* x"后保护 NULL 的有效/简便方法?

linux - 有没有一种简单的方法可以按目录中的文件类型汇总磁盘使用情况?

linux - 如何使用 set 更改 shell 变量?

bash - 减少 curl 命令的输出

c - printf 末尾的问号

linux - 使用 netpipes/netcat 绑定(bind)端口