如何在命令行参数中传递“*”。

时间:2012-12-21 11:10:33

标签: linux shell

请参阅下面的代码

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

编译并运行如下

gcc test.c
./a.out 1 * 2

现在它的o / p伤痕累累..!

o / p是:

 1 
 a.out 
 Desktop 
 Documents 
 Downloads 
 ipmsg.log 
 linux-fusion-3.2.6 
 Music 
 Pictures 
 Public 
 Templates 
 test.c 

2 个答案:

答案 0 :(得分:5)

在星号周围使用单引号:

./a.out 1 '*' 2

这应该可以防止shell将其解释为特殊字符。

答案 1 :(得分:4)

您可以使用

调用您的测试
./a.out 1 \* 2

如果你想传递*作为参数。您也可以使用单引号'*'(按照Esa的建议)或双引号"*"

另请注意,您的循环当前忽略了最后一个参数。如果不是故意的话,请使用i<argc作为退出条件。