Leia uma variável com “read” e preserve barras invertidas digitadas pelo usuário

2

Estou usando read para ler um caminho de um usuário assim:

read -p "Input the file name: " FilePath

O usuário agora insere esta string:

\Supernova\projects\ui\nebula

O que posso fazer para substituir \ por / . O resultado que eu quero é:

/Supernova/projects/ui/nebula 

A propósito, o comando:

echo $FilePath

exibe o resultado:

Supernovaprojectsuinebula

Eu não tenho ideia do que há de errado com isso.

    
por binghenzq 06.11.2013 / 14:02

1 resposta

6

O problema é que read tentará avaliar escapes de barra invertida inseridos pelo usuário. Para fazer o que você quer, você precisa adicionar a opção -r a read , que diz para deixar as escapadas de barra invertida sem avaliação:

read -rp "Input file name: " FilePath
UnixPath="${FilePath//\//}"

Além disso, seus comandos echo precisa de aspas duplas em torno da substituição de variável : echo "$FilePath"

    
por 06.11.2013 / 14:05

Tags