【发布时间】:2020-01-23 22:49:05
【问题描述】:
我知道argc 计算参数的数量,argv 接受参数,但这是我可以确定来自argv 的参数是否以某种格式输入的方式,如括号中而不是插入语。比如./a.out "Hello Word"和./a.out Hello World?
【问题讨论】:
-
第一个将只有一个参数。第二个是两个。特定的外壳可能会添加它自己的怪癖。
-
在大多数 shell 终端(如 bash)上,引号用于将包含空格(如空格和制表符,通常用于分隔 argv 参数)的参数组合在一起(如在单个 argv 中)。特殊字符通常不保存在 argv 中。如果要将这些特殊字符用作普通字符,则需要使用转义字符`\`。
-
如果您发现其中一个参数包含空格,那么它肯定是在括号之间传递的
-
这是早期 Unix shell 所犯的一个根本性错误,不幸的是,为了兼容性必须永远存在。一个程序不可能在 shell 以多种方式弄乱它之前获得它的命令行。这应该是一个库调用,而不是 shell 的永久功能。