如何在Linux中将变量从c程序传递给shell脚本

时间:2018-04-26 19:02:32

标签: c linux sh

是否有任何方法可以将变量从c程序传递到Linux中的shell脚本。我通过从shell脚本调用可执行文件然后返回值并使用shell脚本中的$?访问它来尝试它。还有其他建议吗?

2 个答案:

答案 0 :(得分:1)

ls具有可以在变量中获得的输出。您的程序必须返回键入stdout / stderr

的内容
#/bin/sh
output=$(ls)

我们这样做:

#include <stdio.h>
int main() { 
  printf("Hello, World!");
  return 0;
}

输出Hello world,你可以用同样的方式捕获它。

答案 1 :(得分:0)

您可以从C程序program.c调用bash脚本:

#include <stdio.h>  // printf()
#include <stdlib.h> // system()
#include <string.h> // strcat()

int main() {

  // Init some variable
  char* variable = "Something";

  // Fully qualified path to script.sh
  char* script = "./script.sh ";

  // Full command
  char command[256];

  // Concatenate them to get
  // ./script.sh Something
  strcat(command, script);
  strcat(command, variable);

  // Use the variable in C
  printf("Variable in C: %s\n", variable);

  // Execute the Shell script
  system(command);

  return 0;
}

shell脚本script.sh

# Get first variable
variable=$1

# User the same variable in Shell script
echo "Variable in Shell: $variable"

使用:

# Make script executable
chmod +x script.sh

# Compile
gcc -o program progam.c

# Run
./program

输出:

Variable in C: Something
Variable in Shell: Something

或者

在C程序中将变量打印到stdout,并在shell脚本中捕获stdout,然后在shell脚本中使用它。

Shell脚本script.sh

# Execute C program, and
# capture stdout
variable=$(./program)

# Use variable in Shell
echo "Variable in Shell: $variable"

C程序program.c

#include <stdio.h> // printf()

int main() {

  // Init variable 
  char* variable = "Something";

  // Print to stdout in C
  printf("%s", variable);

  return 0;
}

输出:

Variable in Shell: Something