$后跟C中的命令行参数中的char

时间:2012-08-29 15:54:51

标签: c command-line

我刚用c语言编写了一个使用命令行参数的程序,我试图打印第一个参数。当我用以下命令执行程序时

./a.out $23

并尝试使用以下代码打印第一个参数

printf("%s", argv[1]);

输出只是

3

我在这里遗漏了一些东西,如果存在一些特殊字符,那么命令行参数将被区别对待。有人可以解释这种行为。

4 个答案:

答案 0 :(得分:5)

您需要转义$字符。

试试这个:

./a.out \$23

答案 1 :(得分:4)

据推测,$2被视为shell变量。尝试逃避美元符号:

./a.out \$23

答案 2 :(得分:3)

你必须像这样“抑制”你的论点:

./a.out \$23

shell会解释一些字符。这些字符包括以下内容:

  • \禁止(逃避)其后面的角色(对于空格,制表符或在你的情况下有用)
  • *代表任何单个字符或字符串
  • $代表一个变量(在你的情况下,shell理解变量$ 23,而不是字符串“$ 23”)
  • |||允许在您的命令中解析或管理您的命令
  • &&&允许组合命令或允许使用作业控制
  • "允许shell分隔字符串
  • '这允许shell不解释带有特殊字符的字符串
  • ;分隔命令
  • `其中解释其中两个所包含的命令并返回命令的输出

答案 3 :(得分:1)

shell将$23视为位置参数$2,后跟文字字符3.要传递字符串“$ 23”,请执行

./a.out \$23

./a.out '$23'

要传递shell的第23个位置参数(不太可能,但可能),你会写

./a.out ${23}