你好,我想问为什么我写的时候
ls -l
每行后面都有新行,但是当我将其分配给变量时
myVariable=`ls -l`
然后回显该变量
echo $myVariable
我把所有内容都连在一行中...谢谢
答案1
这个问题产生了两个独立的问题。
该
ls
命令在写入终端和写入文件或管道时的行为有所不同。通过比较这两个命令你可以看到这一点ls ls | cat
在第一个示例中,
ls
可以看到它正在写入终端,因此它为人类读者格式化其输出。在第二个示例中,ls
可以看到它正在写入文件或管道,因此它每行生成一个条目。您可以使用-1
或-C
参数覆盖这两个设置。当您分配
ls -l
给变量时,换行符将被保留。但是,在您的情况下,您在使用变量时不会引用该变量,因此每次运行的“空白”(不打印可见字符的所有内容)都会转换为单个空格。比较这些结果var=$(ls -l); echo $var var=$(ls -l); echo "$var"
看$VAR 与 ${VAR} 以及引用或不引用了解更多详细信息。另请注意,我$(...)
优先使用`...`
.建议的重复答案,理解反引号解释了原因。