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

标签 c++ arrays bash variables

有时在 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: Syntax error: "(" unexpected

和变量的变量:

var=VAR
k=0
VAR0=good
echo $VAR0; echo blah
eval "echo "\$$var$k""[/I]*

错误信息:

warning: unknown escape sequence: '\$' [enabled by default]

请原谅我的无知...有解决办法吗?上述 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;
}

关于c++ - C++中的BASH数组和变量的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20312637/

相关文章:

c++ - 我需要在类中的动态数组上调用 delete[] 但它不起作用

jquery - 如何使用数组的最大值设置宽度?

python - 在 80x60 RGB 像素阵列上优化生命游戏迭代

javascript - 当数组中给出级别时转换对象列表

linux zip 并通过 bash/shell 脚本排除目录

c++ - OF_SHARE_DENY_NONE 不分享阅读?

c++ - 将数学符号存储到字符串C++中

c++ - C++-std::list.erase()不删除元素

linux - 删除重复行但保留前 2 个实例

regex - 如何从正则表达式中获取所有匹配项?