我想遍历输出的每一行: ls -l /some/dir/*
ls -l /some/dir/*
现在我正在尝试: for x in $(ls -l $1); do echo $x; done
for x in $(ls -l $1); do echo $x; done
但是,这会分别遍历行中的每个元素,因此我得到:
-r--r----- 1 ivanevf eng 1074 Apr 22 13:07 File1 -r--r----- 1 ivanevf eng 1074 Apr 22 13:17 File2
但是,我想遍历整个行。我怎么做?
将IFS设置为换行符,如下所示:
IFS=' ' for x in `ls -l $1`; do echo $x; done
如果您不想永久设置IFS,请在其周围放一个子外壳:
(IFS=' ' for x in `ls -l $1`; do echo $x; done)
或同时使用| 改为阅读:
ls -l $1 | while read x; do echo $x; done
还有一个选项,它在同一shell级别上运行while / read:
while read x; do echo $x; done << EOF $(ls -l $1) EOF