有以下代碼:與空格字符爲可執行參數串的擊陣列
測試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 *中提供的那樣,這樣我就可以隨時隨地添加一些東西。如何正確傳遞這些參數?