Variável de string espaçada como parâmetro de comando dentro do shell script

1

Como posso armazenar uma string espaçada em uma variável e usá-la como um parâmetro de comando dentro de um script de shell?

Isso é o que estou tentando fazer:

DESTINATION='/mnt/External Harddisk'
FILE_NAME=$DESTINATION/home.tar.gz
INCREMENTAL=$DESTINATION/home.snar

tar -zcvpf $FILE_NAME \
--directory=/home \
--listed-incremental=$INCREMENTAL \
--exclude=.gvfs \
--exclude=.cache* \
--exclude=*/[Cc]ache* \
--exclude=.thumbnails* \
--exclude=*/[Tt]rash* \
--exclude=*~ \
--exclude=.dropbox* \
--exclude=*.vdi \
--exclude=*VirtualBox*VMs* \
.
    
por Eduardo 09.03.2015 / 02:56

2 respostas

2

esta resposta pode abranger Espaços nas variáveis ambientais do Linux?

Você coloca a variável de ambiente entre aspas duplas. exemplo demonstrando que abaixo

Eu estou fazendo ls 'asdf asdf' , que é ls em um arquivo 'adsf asdf' com um espaço no nome do arquivo. Eu quero fazer isso com uma variável. Você vê com aspas duplas, obtém o resultado. Sem citações, trata o espaço como especial e procura o arquivo asdf duas vezes. E com aspas simples, ls '$f' , procura literalmente o dólar f. Mas com aspas duplas ls "$f" funciona, ou seja, dá o mesmo resultado que ls 'asdf asdf' .

$ ls 'asdf asdf' <ENTER>
ls: cannot access asdf asdf: No such file or directory

$ export f='asdf asdf' <ENTER>

$ echo $f <ENTER>
asdf asdf

$ ls $f <ENTER>
ls: cannot access asdf: No such file or directory
ls: cannot access asdf: No such file or directory

$ echo $f <ENTER>
asdf asdf

$ ls '$f' <ENTER>
ls: cannot access $f: No such file or directory


$ ls "$f" <ENTER>
ls: cannot access asdf asdf: No such file or directory
    
por 09.03.2015 / 03:10
-1

Prefira qualquer caractere de Espaço com a string Escape, para que o Espaço esteja na string como '\' (barra invertida + espaço). Espero que esta ajuda.

    
por 09.03.2015 / 03:07