带有空格的变量的 cat 命令

pro*_*eek 1 linux bash command-line cat

我需要使用cat命令来显示文件的内容,文件名中有空格:“embedded board link.rtf”。

我使用变量分配文件名:I="embedded board link.rtf",但是当我使用 时cat $I,出现此错误消息。

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
Run Code Online (Sandbox Code Playgroud)

可能有什么问题?

Att*_*tie 6

你也必须引用变量:

I="embedded board link.rtf"
cat "$I"
Run Code Online (Sandbox Code Playgroud)

这是因为 shell 会先展开任何变量,然后解析命令:

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

当你真正的意思是:

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

请注意,在bash许多其他 shell 中,单引号内的变量不会被扩展:

  1. cat '$1'
  2. cat '$1'