Variable de cadena espaciada como parámetro de comando dentro del script de shell


1

¿Cómo puedo almacenar una cadena espaciada en una variable y usarla como parámetro de comando dentro de un script de shell?

Esto es lo que estoy tratando de hacer:

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* \
.

Respuestas:


2

esta respuesta podría cubrirlo Espacios en variables ambientales de Linux?

Pones la variable de entorno entre comillas dobles. ejemplo que demuestra que a continuación

Estoy haciendo lo ls 'asdf asdf'que es ls en un archivo 'adsf asdf' con un espacio en el nombre del archivo. Quiero hacerlo con una variable. Ves con comillas dobles se obtiene el resultado. Sin comillas trata el espacio como especial y busca el archivo asdf dos veces. Y con comillas simples ls '$f'busca literal dólar f. Pero con comillas dobles ls "$f"funciona, es decir, da el mismo 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

-1

Anteponga cualquier carácter de espacio con la cadena de escape, por lo que el espacio estará en la cadena como '\' (barra invertida + espacio). Espero que esto ayude.


1
¿Qué quieres decir? ¿Me gusta esto? no funciona pastebin.com/raw.php?i=bCa90GYe
barlop

1
El shell analiza las comillas y los escapes antes de sustituir las variables, por lo que poner comillas y escapes en los valores de las variables no hace nada útil. Debe poner comillas dobles alrededor de la referencia de variable.
Gordon Davisson

Por favor lea la pregunta otra vez cuidadosamente. Su respuesta no responde a la pregunta original.
DavidPostill

Da un ejemplo y pruébalo. Incluso podría probarlo y descubrir que no funciona.
barlop
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.