繁体   English   中英

C ++中的BASH数组和变量变量

[英]BASH arrays and variables of variables in C++

有时在C ++中保护长脚本很方便。

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

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

链接: http//www.unix.com/showthread.php? t = 216190

不幸的是,因为一维阵列存在问题:

array=(a1 a2 a3)

错误信息:

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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM