【问题标题】:passing an integer from C to shell script将整数从 C 传递到 shell 脚本
【发布时间】:2013-11-10 14:24:56
【问题描述】:

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

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

call.sh::

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

C 的输出是::

welcome    
done

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

【问题讨论】:

  • 即使 Andrew 的回答是正确的,我也只是让 C 程序只将变量打印到 stdout,然后将其作为参数传递到 shell 脚本中。

标签: shell integer arguments


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    函数原型如下:

    int setenv(const char *name, const char *value, int overwrite);
    

    【讨论】:

      猜你喜欢
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-27
      • 2020-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多