在终端 (bash) 中粘贴正确的 if 语句(以 '\t' 缩进)给出语法错误

pasting correct if statement (indented with '\t') in terminal (bash) gives syntax error

当我在 ubuntu 14.04 的终端中粘贴以下内容时,出现语法错误和提示 'Display all 2733 possibilities? (y or n)'。这些行以 '\t' 字符缩进。如果我用 space 个字符替换 '\t' 没有错误。因此,终端是否特别处理 '\t' 并显示选项?需要帮助 - 这里有什么问题?

    if [ $x -eq 1 ]; then
        cat non-existent-file;
    fi

在交互式会话中 Tab 触发自动完成。 Bash 不知道您在粘贴文本。它会看到复制粘贴的 \t,就像您在键盘上按 Tab 一样。

通常您键入长命令名称的一部分,然后按 Tab 自动完成其余部分。如果您在空提示时按 Tab,那么自动完成会匹配您 $PATH 中的每个程序,全部 2,733 个。