有时在 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/