如何用bash执行命令? system()
使用sh而不是bash。
我知道我可以使用system("/bin/bash -c command")
在bash中执行命令。但是我有一个很长的命令,/bin/bash -c
给了我一些问题。我需要的是bashrun(command)
或其他。
该命令是字符串,而不是文件
答案 0 :(得分:4)
案例1:文件中的脚本 - 使用shebang
#!/usr/bin/env bash
在脚本的顶部,然后执行
int status=system("/full/path/to/script");
if(status==-1){
// failure mode
}
案例2:脚本存储为字符串
执行以下操作
char *command="$(which bash) -c 'ls'";
int status=system(command);
if (status==-1){
//failure mode
}
答案 1 :(得分:0)
如果您正在创建一个非常长的shell命令并且需要bash来解释它,那么您有两个真正的选择:
popen()
启动bash实例,并将shell命令作为标准输入写入bash进程。如果您因shell脚本引用(而不是命令长度)而遇到问题,那么这些选项中的任何一个都可以使用,或者您可以实现等效的system()
但使用{{1}在不经过execl()
的情况下传递参数。我在这里假设一个POSIX型系统。
sh