Mantenha \ na variável de leitura para mostrar o espaço [duplicado]

1

Tentando manter espaços na variável para leitura com o \ .

$ echo "Drag folder to be copied to terminal and press ENTER."
$ read FILE
/Users/UserName/Desktop/Folder\ With\ Spaces\ In\ it
$ echo "$FILE"
/Users/UserName/Desktop/Folder With Spaces In it

O \ foi removido. Eu preciso que eles permaneçam como serão usados mais tarde na cópia. Exemplo

$ cp -R $FILE /Volumes/USBName 

Eu joguei com diferentes aspas e olhei em volta, mas nada funcionou para mim até agora. Eu posso ter que mudar o IFS, não tenho certeza?

    
por Phil 16.12.2015 / 02:26

1 resposta

1

$ FILE=/Users/UserName/Desktop/Folder\ With\ Spaces\ In\ it
$ echo $FILE
/Users/UserName/Desktop/Folder With Spaces In it
$ echo "${FILE// /\ }"
/Users/UserName/Desktop/Folder\ With\ Spaces\ In\ it
$ 

Essa é a substituição do bash:

  • // significa procurar por todas as instâncias e não apenas pelo primeiro
  • pesquise o caractere space
  • e substitua / por
  • uma barra invertida literal (uma barra invertida de escape para garantir que ela seja exibida) e um espaço: \ .

Embora seja provavelmente mais fácil apenas cp -R "$FILE" /Volumes/USBName

    
por 16.12.2015 / 02:33

Tags