当我ls -l $(echo file)从括号输入输出(这只是简单的回声)时,将其传递给外部ls -l命令.它等于简单ls -l file.
当我键入时,ls -l (echo file)我们有错误,因为无法嵌套()在外部命令中.
有人可以帮助我理解之间的差异$()和()?
我有一个非常简单的目录,其中包含"directory1"和"file2".后
out=`ls`
Run Code Online (Sandbox Code Playgroud)
我想打印我的变量:echo $out给:
directory1 file2
Run Code Online (Sandbox Code Playgroud)
但echo "$out"给出:
directory1
file2
Run Code Online (Sandbox Code Playgroud)
所以使用引号给出了每个记录在单独行上的输出.正如我们所知,ls命令打印输出使用单行表示所有文件/目录(如果行足够大以包含输出),所以我希望使用双引号可以防止我的shell将单词拆分为单独的行,而省略引号则会拆分它们.请告诉我:为什么使用引号(用于防止分词)突然分裂输出?