Faça uma tentativa para isso:
#!/bin/bash --
(cd some_directory ;\
for file1 in *.txt ; do
for file2 in *.txt ; do
# here python script should be run
printf "%s " "$(python /path/to/script.py "${file1}" "${file2}")"
done
printf "\n"
done ) > result.file
note : /path/to/script.py
deve ser substituído pelo nome completo do caminho do script script.py
.
O bloco inteiro está incluso em (...)
. Todos os comandos dentro são executados em uma subcamada. Isso é usado para agrupar e capturar sua saída e para executar todos os comandos no some_directory
, graças à primeira linha com o comando cd
.
"${file1}"
e "${file2}"
são usados para referenciar os valores dessas variáveis com segurança.
"$( ... )"
está executando o comando dentro e agrupa a saída em uma única string, graças às aspas duplas.
printf "%s " "$( ... )"
imprime o resultado do script python
com um espaço adicional.
printf "\n"
imprime uma nova linha.
> result.file
redireciona toda a saída gerada com todos os comandos dentro do subshell para o arquivo chamado result.file
no diretório atual.
Ele foi testado com nomes de arquivos estranhos e parece seguro.