cat comando com uma variável que possui espaços

0

Eu preciso usar o comando cat para exibir o conteúdo de um arquivo, e o nome do arquivo tem espaços: "embedded board link.rtf".

Eu atribuo o nome do arquivo usando uma variável: I="embedded board link.rtf" , mas quando eu uso cat $I , eu tenho essa mensagem de erro.

wireless-10-146-35-118 Desktop> cat $I
cat: embedded: No such file or directory
cat: board: No such file or directory
cat: link.rtf: No such file or directory

O que pode estar errado?

    
por prosseek 03.06.2017 / 20:14

1 resposta

6

Você tem que citar a variável também:

I="embedded board link.rtf"
cat "$I"

Isso ocorre porque o shell primeiro expande as variáveis e, em seguida, analisa o comando:

  1. cat $1
  2. cat embedded board link.rtf

Quando você realmente quis dizer o seguinte:

  1. cat "$1"
  2. cat "embedded board link.rtf"

Observe que, em bash e muitos outros shells, as variáveis dentro de aspas simples não serão expandidas:

  1. cat '$1'
  2. cat '$1'
por 03.06.2017 / 20:20