BASH数组和C++; 有时在C++中保护长脚本是很方便的。

BASH数组和C++; 有时在C++中保护长脚本是很方便的。,c++,arrays,bash,variables,C++,Arrays,Bash,Variables,以下语法适用于简单命令: #define SHELLSCRIPT1 "\ #/bin/bash \n\ echo \"hello\" \n\ " int main () { cout <<system(SHELLSCRIPT1); return 0; } 错误消息: sh:12:语法错误:“(”意外 和变量的变量: var=VAR k=0 VAR0=good echo $VAR0; echo blah eval "echo "\$$var$k""[/I]* 错误消息: 警告:未知

以下语法适用于简单命令:

#define SHELLSCRIPT1 "\
#/bin/bash \n\
echo \"hello\" \n\
"
int main ()
{
cout <<system(SHELLSCRIPT1);
return 0;
}
错误消息:

sh:12:语法错误:“(”意外

和变量的变量:

var=VAR
k=0
VAR0=good
echo $VAR0; echo blah
eval "echo "\$$var$k""[/I]*
错误消息:

警告:未知转义序列:“\$”[默认情况下已启用]

请原谅我的无知…有没有解决办法?前面提到的C++有什么局限性?从C++调用BASH脚本不是我的最佳解决方案。脚本需要在.CPP

内。
谢谢你误解了system()的工作原理。它将用给定的字符串调用命令解释器。因此std::system(“echo\“Hello\”)用“Hello”作为参数调用echo程序。你可以调用命令解释器,并用它可以作为脚本计算的字符串来支持它

const std::string script("bash -c 'as=(123 456)\n\
for a in ${as[@]}; do \
   echo $a;\
done'\
");

int main() {
    std::system(script.c_str());
    return 0;
}

将这一行添加到代码中:array=(\“a1\”\“a2\”)\n\会导致错误消息“Syntax error:”(“意外的”)。只需使用“hello”代码就可以工作。此语法上下文中的数组定义(以及变量的变量)就是问题。即使在添加
array=(\“a1\”\“a2\”)之后,代码也会为我编译和运行\n\
到SHELLSCRIPT1字符串。我同意,如果您可以发布一个不起作用的代码示例,以及它在您的系统上产生的错误消息,这会有所帮助。以下工作:#include#include#include#include#using namespace std;#define SHELLSCRIPT“\\\\/bin/bash\n\echo\“hello”\n“没有编译错误。输出:您好以下内容不起作用:编译器:sh:2:语法错误:“(“意外的{35; include{35; include{35; include}include使用名称空间std;{35; define SHELLSCRIPT”\\\\/bin/bash\n\array=(\'a1\“\'a2\”)\n\echo${array[0]}\n\”int main(){当然,调用也包括在第一种情况下(工作{cout in the array=(\'a1\'“\'a2\”)的平凡回音)第二个圆括号的颜色表示有问题。这个问题不清楚。请显示您为系统函数调用提供的一些输入。您有清晰的输入。一切都很清楚。变量的变量问题的解决方案是采用此语法“\”$\“$var$k”。数组问题保持不变
const std::string script("bash -c 'as=(123 456)\n\
for a in ${as[@]}; do \
   echo $a;\
done'\
");

int main() {
    std::system(script.c_str());
    return 0;
}