Em:
path_with_spaces="$HOME/blah blah"
arg_list="$path_with_spaces/abc $path_with_spaces/xyz"
python show_args.py $arg_list
Você está usando uma variável escalar / string e usando o operador split + glob (deixando essa variável sem aspas) para dividir o conteúdo dessa variável e gerar os argumentos para passar para python
.
A parte split do operador split + glob divide os caracteres armazenados no parâmetro $IFS
special.
Aqui, você pode desativar a parte glob e dividir em um caractere não encontrado em seus caminhos. Por exemplo, se nova linha não for encontrado nos caminhos:
path_with_spaces="$HOME/blah blah"
arg_list="$path_with_spaces/abc
$path_with_spaces/xyz"
IFS="
"
set -f # disable glob.
python show_args.py $arg_list
Você também pode usar aspas do shell e usar eval
para que o shell interprete essas aspas (aqui usando os recursos bash
-specific):
printf -v arg_list '%q ' "$path_with_spaces/abc" \
"$path_with_spaces/xyz"
eval "python show_args.py $arg_list"