[英]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.