将C变量的值赋给bash变量
我正在用C编写一个程序,该程序也包含bash代码。我需要将C变量的值赋给bash变量。更具体地说,我需要将提供给C程序的参数指定给同一程序中的bash变量将C变量的值赋给bash变量,c,linux,bash,C,Linux,Bash,我正在用C编写一个程序,该程序也包含bash代码。我需要将C变量的值赋给bash变量。更具体地说,我需要将提供给C程序的参数指定给同一程序中的bash变量 int main( int argc, char **argv) { printf(argv[1]); system("echo $1"); // Here I need to assign argv[1] to bash variable. } 可以使用设置脚本可以访问的环境变量 #include <stdlib.h
int main( int argc, char **argv)
{
printf(argv[1]);
system("echo $1"); // Here I need to assign argv[1] to bash variable.
}
可以使用设置脚本可以访问的环境变量
#include <stdlib.h>
int main(int argc, char **argv) {
setenv("VAR", argv[1], 1);
system("echo $VAR");
return 0;
}
#包括
int main(int argc,字符**argv){
setenv(“VAR”,argv[1],1);
系统(“echo$VAR”);
返回0;
}
您可以使用设置脚本可以访问的环境变量
#include <stdlib.h>
int main(int argc, char **argv) {
setenv("VAR", argv[1], 1);
system("echo $VAR");
return 0;
}
#包括
int main(int argc,字符**argv){
setenv(“VAR”,argv[1],1);
系统(“echo$VAR”);
返回0;
}
创建一个缓冲区,将值写入其中sprintf(buf,“echo%s”,argv[1])
并在缓冲区上使用system()“bash变量”是什么?如何将这些信息从bash传递到程序?通过命令行($。/a.out 42 FOO
),也许?@tommyle2ksprintf
-这就是您在应用程序中创建漏洞的方式。@MaximeGroushkin我认为这是他最小的问题;)创建缓冲区的可能重复项,将值写入它sprintf(buf,“echo%s”,argv[1])
并在缓冲区上使用system()“bash变量”是什么?如何将这些信息从bash传递到程序?通过命令行($。/a.out 42 FOO
),也许?@tommyle2ksprintf
-这就是您在应用程序中创建漏洞的方式。@MaximeGroushkin我认为这是他最小的问题;)非常感谢,它解决了我的问题。在bash中不适用于我:$FOOVAR=3;echo$FOOVAR;echo-e'#include\nin main(void){setenv(“FOOVAR”,“42”,1)}'| gcc-std=c11-pedantic-D#XOPEN#u SOURCE=700-xc-/a、 出去;echo$FOOVAR
输出“3 3”,而不是“3 42”。@pmg,您使用它的方式不对,因为您的shell脚本和c程序中的system()不在同一个会话中,您只需从c程序中执行shell脚本,环境变量便可用于代码中执行的脚本。非常感谢,它解决了我的问题。在bash中对我不起作用:$FOOVAR=3;echo$FOOVAR;echo-e'#include\nin main(void){setenv(“FOOVAR”,“42”,1)}'| gcc-std=c11-pedantic-D#XOPEN#u SOURCE=700-xc-/a、 出去;echo$FOOVAR
输出“3 3”,而不是“3 42”。@pmg,您使用它的方式不对,因为您的shell脚本和c程序中的system()不在同一个会话中,只需从c程序中执行shell脚本,环境变量就可用于代码中执行的脚本。