2

好的,我正在研究另一种脚本,但问题归结为如下:假设以下“for循环”:

for i in $(ls -l); do echo $i; done

问题是“for循环”用空格分隔值,所以每个“i”等于“ls -l”中用空格分隔的每个单词。因此输出是这样的:

全部的

24

drwxrwxr-x。

2

詹姆士

詹姆士

4096

十月

26

16:56

bg

. . .

但我希望在每个刺激变量“i”中都等于“ls -a”的整行而不是每个单词。换句话说,“i”等于整行

"drwxrwxr-x.  2 james james 4096 Oct 26 16:56 bg" 

而不是每一个字都让人恼火。我尝试了很多解决方法,但没有一个奏效,有点吓到我了。

有没有办法告诉“for循环”用换行符而不是空格分隔

PS 上面的例子只是为了说明(你可能会说这有点无意义),但我的问题与此类似。

4

1 回答 1

3

相反,您可以

ls -l | while IFS= read -r l ; do echo "This is it: $l" ; done

或者做

IFS=\\n

在运行你的之前for,但由于可能的副作用,我会避免这样做。

于 2013-10-27T15:47:12.067 回答