我不明白为什么从脚本内部运行和直接从 bash 运行的相同命令在标准输出上的输出格式会有所不同。
当我ls -l
从我的 bash 命令行运行时,我会在每个文件的末尾得到一个很好的换行符(产生一种表格数据),而如果通过 bash 运行相同的命令,$(ls -l)
我会得到相同的数据但在一行上。
如果可能的话,请告诉我如何修改它(针对脚本)。
答案1
使用时, $(ls -l)
换行符会被删除。它就是这样做的。
与 相同 ,`ls -l`
与 首选 相同$(ls -l)
。
当你想用输出来做某事时,ls -l
你需要以不同的方式去做。
ls -l |while read xx
do
echo $xx
((ii = ii + 1))
done
(请注意,此(ls -l
)打开一个新 shell,并且该 shell 中设置的变量在该 shell 之外不“可见”,因此ii
在该循环之外不可见。)