Eu estou fazendo um serviço de automação, e a primeira parte pega arquivos e RARs usando um script bash
Então, no Automator, eu tenho uma ação Get Specified Finder Items para testar o fluxo de trabalho e, em seguida, o script bash
F=''
for i in "$@"; do
F="$F \"${i//\"/\\\"}\""
done
/usr/local/bin/rar a ~/archive.rar $F
por isso, apenas pega os caminhos de arquivo, coloca aspas em torno deles e executa o comando RAR com todos os arquivos como argumentos. Quando eu corro isso, o automator me dá o erro
Não é possível abrir "/Users/user/test.txt" Nenhum arquivo ou diretório
Não é possível criar ~ / archive.rar Nenhum arquivo ou diretório
Nenhuma pista porque está recebendo esses erros. Quando eu adiciono um eco ao último comando
echo /usr/local/bin/rar a ~/archive.rar $F
Os resultados são exatamente o comando que preciso. Eu posso copiar e colá-lo no terminal e funciona.
O automator executa scripts bash de maneira diferente, então eles rodariam no terminal?
fonte
~
não é expandido dentro de aspas, então você precisa de pelo menos~/"archive.rar"
lá. E eu suspeito de alguns problemas com o manuseio de espaços e citando também para$F
. Funciona se você o executar diretamente no Terminal?"$@"
para rar diretamente?Respostas:
bash
faz expansão de$@
diferente de todas as outras variáveis de ambiente para preservar espaços em branco, etc. em argumentos. Debash(1)
:Então você basicamente deveria poder ligar
rar
dentro da ação Shell Script sem qualquer análise:fonte
Estranha auto-citação indo nos bastidores que eu não consegui descobrir. Então, eu fiz isso para conseguir fazer o que eu queria, embora não exatamente uma solução:
fonte