【发布时间】:2019-10-17 19:13:48
【问题描述】:
我在将参数从 bash 文件传递到 C 程序时遇到了一些问题。 我正在使用 bash 脚本来编译这样的 C 程序:
gcc -O0 filec1.c -lm -o fileoutput
./fileoutput $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11
现在,如果我在 bash 文件中打印每个参数,添加以下行:
for i in $@; do
echo $i
done
传递的每个参数都被正确打印,但是如果我打印 c 文件中的每个参数,它只有一个带有以下行的 main:
int main(int argc, char **argv){
for(int i=0; i<argc; i++){
printf("%s\n", argv[i]);
}
}
9th 之后的参数输出错误或未打印。 有人可以帮帮我吗?
【问题讨论】:
-
请附上您的问题的minimal, reproducible example。就你现在的问题而言,几乎不可能知道这里到底出了什么问题。
-
另外,你能清楚地解释你认为错了什么以及你期望它做什么。仅仅说“它是错误的”实际上只会导致回复“它只是在做你告诉它做的事情”。这是令人沮丧的,因为您知道自己想做什么,但无法将其输入机器-它无法读懂您的想法。不幸的是,我们也无法读懂您的想法,因此您需要清楚地说明问题。此外,FWIW,从命令行运行命令并传递 $1 $2 等参数是不寻常的。 通常这些“参数”只有在 bash 脚本中才有意义。
-
C 程序是什么样的?你是如何处理这些论点的?
-
9 以上的编号参数需要大括号,例如
${10} ${11} ${12}等。如果您不使用大括号,它将使用单个数字参数后跟文字数字。例如$12将给出$1的值,后跟文字2。