1

我需要传递一个每次从 C 程序到 shell 脚本都会改​​变的参数。

int val=1234;
char buf[100];
sprintf(buf,"echo %d",val);
system("call.sh $buf");

呼叫.sh::

#!/bin/sh
echo "welcome"
echo $*
echo "done"

C的输出是::

welcome    
done

我在脚本中看不到参数值 1234。任何人都可以建议我获得正确的价值...

4

2 回答 2

2

您不能将 C 变量作为 shell 变量传递。您需要在字符串中构建整个命令行,然后将其传递给system(...)

int val=1234;
char buf[100];
sprintf(buf, "call.sh %d", val);
system(buf);
于 2013-10-30T19:24:50.240 回答
0

您应该使用setenv(),getenv()putenv()函数(在 中定义stdlib.h)。引用man

setenv()如果 name 尚不存在,则该函数将变量 name 添加到具有 value 值的环境中。如果 name 确实存在于环境中,那么如果 overwrite 不为零,则其值将更改为 value;如果 overwrite 为零,则 name 的值不会改变。此函数复制由 name 和 value 指向的字符串(与 对比putenv(3))。

该函数的原型如下:

int setenv(const char *name, const char *value, int overwrite);
于 2013-10-30T22:17:33.163 回答