0 votos

almacenar un nombre de directorio con espacios en una variable de bash

(Nota: después de algunas investigaciones más tengo una respuesta parcial, pero no me gusta tener que escribir los comandos en contra de que la variable de forma diferente dependiendo de espacios incrustados o no. Voy a aceptar mejor las sugerencias).

Me gusta para almacenar diferentes variables en bash como estoy trabajando en algo. Esto evita tener que escribirla cada vez y también ayuda a la hora de volver a trabajar en él algún tiempo después (palo de la asignación en un localprofile.sh archivo y source que más adelante...).

Me gustaría guardar un nombre de directorio con espacios en él. Yo sé cómo hacer lidiar con espacios en el archivo/directorio de nombres de forma interactiva, utilizando citando o \basado escapar:

$ ls -1 /Users/myuser/Library/Application\ Support/ | tail -5
iTerm2
icdd
org.videolan.vlc
pip
videosubscriptionsd

o

$ ls -1 "/Users/myuser/Library/Application Support/" | tail -5
iTerm2
icdd
org.videolan.vlc
pip
videosubscriptionsd

Ahora me gustaría asignar a ese directorio a un bash $dn variable y que no funciona tan bien.

Éstos son algunos de varios intentos. En fin me quedé lejos de ~basado en la extensión del shell.

dn='/Users/myuser/Library/Application Support/'
echo ''
echo ''
echo $dn
ls -1 $dn

dn='"/Users/myuser/Library/Application Support/"'
echo ''
echo ''
echo $dn
ls -1 $dn

dn=/Users/myuser/Library/Application\ Support/
echo ''
echo ''
echo $dn
ls -1 $dn

dn="/Users/myuser/Library/Application\ Support/"
echo ''
echo ''
echo $dn
ls -1 $dn

cada uno de estos muestra una variación en ls: /Users/myuser/Library/Application\: No such file or directory

0voto

JL Peyret Puntos133

OK, encontré esto por medio de la ampliación por google sin especificar o mac osx - este es un genérico bash tema: Stackoverflow cómo agregar ruta de acceso con espacio en bash variable

Y, traducir eso a mi pregunta, "interactivo enfoques", es decir, citando o \-escapando de trabajo, siempre y cuando usted ajusta el bash variable en su propio comillas dobles al ejecutar los comandos:

dn='/Users/myuser/Library/Application Support/'
ls -1 "$dn" | tail -5

dn=/Users/myuser/Library/Application\ Support/
ls -1 "$dn" | tail -5

No utilice comillas simples por encima - no hay bash sustitución sucediendo en ese caso, y usted consigue ls: $dn: No such file or directory.

El inconveniente es tener que ajustar las variables de comillas dobles o no dependiendo de los espacios integrados.

dn="'/Users/myuser/Library/Application Support/'" y luego no tener citas no funciona, por cierto.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by: