C代码中的Bash命令
我正在尝试使用C程序运行一些bash命令C代码中的Bash命令,c,bash,C,Bash,我正在尝试使用C程序运行一些bash命令 #include<stdio.h> #include<stdlib.h> int main() { int j; char a[4]={'a','9','8','4'}; for (j=0;j<=3;j++) { printf("a[%d]=%c %p\n",j,a[j],&a[j]); } system("a=(a 9 8 4)");
#include<stdio.h>
#include<stdlib.h>
int main()
{
int j;
char a[4]={'a','9','8','4'};
for (j=0;j<=3;j++)
{
printf("a[%d]=%c %p\n",j,a[j],&a[j]);
}
system("a=(a 9 8 4)");
system("echo ${a[*]}");
}
有什么想法吗?
system
通常运行一个POSIX shell(通常是dash,而不是bash),每次调用都会启动一个新的shell进程,因此如果您真的想从system
启动bash,并让第二个bash命令打印第一个命令中定义的数组,那么您需要类似于system的东西(“bash-c'a=(a9 8 4);echo${a[*]}”
system
通常运行一个POSIX shell(通常是dash,而不是bash),每次调用都会启动一个新的shell进程,因此如果您真的想从system
启动bash并让第二个bash命令打印第一个命令中定义的数组,那么您需要类似于system的东西(“bash-c'a=(a9 8 4);echo${a[*]}”代码>两件事:
- 每次调用
system()
时,都会调用一个新的shell。这意味着变量声明将只对当前调用的shell可见,而不会在随后调用system()
- 除此之外,
system()
在内部调用/bin/sh
,而不是/bin/bash
/bin/sh
在许多系统(如您的系统)上都是指向兼容POSIX的shell的链接
两件事:
- 每次调用
system()
时,都会调用一个新的shell。这意味着变量声明将只对当前调用的shell可见,而不会在随后调用system()
- 除此之外,
system()
在内部调用/bin/sh
,而不是/bin/bash
/bin/sh
在许多系统(如您的系统)上都是指向兼容POSIX的shell的链接
system(“a=(a9 8 4);echo${a[*]}”)嗯。。。为什么打电话给bash?大多数bash命令都是用C实现的,您可以使用C API…系统直接调用它们(“a=(a9 8 4);echo${a[*]}”)Hmm。。。为什么打电话给bash?大多数bash命令都是用C实现的,您可以使用C API直接调用它们。。。
system("a=(a 9 8 4)");
system("echo ${a[*]}");