有以下代码:与空格字符为可执行参数串的击阵列
测试2.cpp(编译为可执行TEST2):
#include <iostream>
int main(int argc, char** argv)
{
for(int i = 0; i < argc; ++i){
std::cout << i << " " << argv[i] << std::endl;
}
return 0;
}
test.sh(参数制备脚本):
some_array=("text1" "text two" "text tree")
input_variables=""
for i in $(seq 0 $((${#some_array[*]} - 1))); do
input_variables="$input_variables --parameter=\"${some_array[$i]}\""
echo $input_variables
done
echo "Running: ./test2$input_variables"
./test2 $input_variables
输出:
$ sh test.sh
--parameter="text1"
--parameter="text1" --parameter="text two"
--parameter="text1" --parameter="text two" --parameter="text tree"
Running: ./test2 --parameter="text1" --parameter="text two" --parameter="text tree"
0 ./test2
1 --parameter="text1"
2 --parameter="text
3 two"
4 --parameter="text
5 tree"
我想传递给test2可执行文件3个参数,但传递了5个参数,并且单词之间的空格字符存在问题。我也想保持输入参数在数组中,就像它在* some_array *中提供的那样,这样我就可以随时随地添加一些东西。如何正确传递这些参数?