Variable chaîne espacée en tant que paramètre de commande dans un script shell

1

Comment puis-je stocker une chaîne espacée dans une variable et l'utiliser comme paramètre de commande dans un script shell?

C'est ce que j'essaie de faire:

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* \
.
Eduardo
la source

Réponses:

2

cette réponse pourrait couvrir les espaces dans les variables d'environnement Linux?

Vous mettez la variable d'environnement entre guillemets. exemple démontrant que ci-dessous

Je fais ce ls 'asdf asdf'qui est ls sur un fichier 'adsf asdf' avec un espace dans le nom du fichier. Je veux le faire avec une variable. Vous voyez avec des guillemets doubles le résultat. Sans guillemets, il considère l'espace comme spécial et recherche deux fois le fichier asdf. Et avec des guillemets simples, ls '$f'il cherche littéralement le dollar f. Mais avec les guillemets doubles, ls "$f"cela fonctionne, c’est-à-dire qu’il donne le même résultat 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
barlop
la source
-1

Faites précéder tout caractère Space par une chaîne d'échappement, l'espace sera donc dans la chaîne sous la forme '\' (barre oblique inverse + espace). J'espère que cette aide.

Tien Vu
la source
1
Que voulez-vous dire? comme ça? ne fonctionne pas pastebin.com/raw.php?i=bCa90GYe
barlop
1
Le shell analyse les guillemets et les échappements avant de substituer des variables. Par conséquent, mettre des guillemets et / ou des échappements dans les valeurs des variables ne sert à rien. Vous devez mettre des guillemets doubles autour de la référence de la variable.
Gordon Davisson
Veuillez relire attentivement la question. Votre réponse ne répond pas à la question initiale.
DavidPostill
Donnez un exemple et testez-le. Vous pourriez même l'essayer et constater que cela ne fonctionne pas.
Barlop