$ 的转义结果是:让 $ 变成普通字符(字面量)。字面量的 $ 字符,不再具有“变量/命令替换”的功能。
\$(...),并把 (hostname) 单独当作一个 token
echo $ (hostname)
即三个 tokens:
echo$ (一个孤立的美元符号)(hostname) (一个子 shell 命令)孤立的 $ 在命令位置是非法的,$ 作为一个孤立的 WORD,在语法上并不违法!
Shell 允许你写:echo $
Shell 报错时,通常会指出 第一个让它困惑的符号。由于 (hostname) 是一个整体,它就把 ( 拿出来报错:
syntax error near unexpected token '('
但实际上,根本原因是前面那个无意义的 $ 导致语法结构崩溃。