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