Unix - endereçamento de nome de arquivo com espaço para script [duplicado]

0

Eu tenho arquivos Deep.flac e A1 - Rolling In The Deep.flac

Eu escrevi o script abaixo, mas ele só funciona com Deep.flac Não parece funcionar com nomes de arquivos com espaços. Eu estou aprendendo o sistema unix através do meu OSX.

Basicamente, estou usando sox para converter meu flac para aiff, mantendo o nome dos arquivos intactos.

Meu script convertX2Y.sh :

#!/bin/bash

# Author: Rei Yash Dean
# Copyright: Free
# Script: to convert flac files to aiff using sox; while keeping file name unchanged

for x in *.flac;
do sox $x $(basename $x .flac).aiff;
done

O erro que ele retorna é:

sox FAIL formats: can't open input file 'The': No such file or directory
    
por Rei89 13.07.2014 / 09:44

1 resposta

1

Coloque citações em torno de itens que você deseja que sejam tratados como argumentos únicos por o programa:

sox "$x" "$(basename "$x" .flac).aiff"

Se você usar aspas duplas (como acima), poderá usar referências de variáveis como $x dentro delas. Se você usar aspas simples ( '...' ), use os caracteres especiais que usar dentro deles são mantidos como você os escreveu.

    
por 13.07.2014 / 09:47

Tags