$C中的命令行参数后跟字符
我刚刚用c语言写了一个程序,它使用命令行参数,我试着打印第一个参数。当我用下面的命令执行程序时$C中的命令行参数后跟字符,c,command-line,C,Command Line,我刚刚用c语言写了一个程序,它使用命令行参数,我试着打印第一个参数。当我用下面的命令执行程序时 ./a.out $23 并尝试使用下面的代码打印第一个参数 printf("%s", argv[1]); 输出刚刚好 3 如果存在一些特殊字符,那么命令行参数的处理方式会有所不同。有人能解释这种行为吗。您需要转义$字符 试试这个: ./a.out \$23 大概,$2被视为shell变量。尝试避开美元符号: ./a.out \$23 shell将$23视为位置参数$2,后跟文字字符3。要传递
./a.out $23
并尝试使用下面的代码打印第一个参数
printf("%s", argv[1]);
输出刚刚好
3
如果存在一些特殊字符,那么命令行参数的处理方式会有所不同。有人能解释这种行为吗。您需要转义
$
字符
试试这个:
./a.out \$23
大概,
$2
被视为shell变量。尝试避开美元符号:
./a.out \$23
shell将
$23
视为位置参数$2
,后跟文字字符3。要传递字符串“$23”,请执行以下操作之一
./a.out \$23
或
要传递shell的第23个位置参数(不太可能,但可能),可以编写
./a.out ${23}
你必须像这样“抑制”你的论点:
./a.out \$23
有些字符由shell解释。这些字符包括以下内容:
禁止(转义)后面的字符(适用于空格、制表符或您的情况)\
表示任何单个或多个字符串的*
表示变量(在您的示例中,shell理解变量$23,而不是字符串“$23”)$
或|
允许在命令中进行解析或通过管道传输命令|
或&
允许命令组合或允许使用作业控制&
允许shell分隔字符串“
,它允许shell不解释带有特殊字符的字符串”
用于分隔命令;
解释其中两个命令所包含的命令,并返回命令的输出`
./a.out \$23