我想遍历输出中的每一行:ls -l/some/dir/*
现在我正在尝试:for x in $(ls -l $1); echo $x;完成
但是,这会分别迭代该行中的每个元素,所以我得到:
-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,请在其周围放置一个子 shell:
(IFS='
'
for x in `ls -l $1`; do echo $x; done)
或者使用while |改为阅读:
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
https://stackoverflow.com/questions/2859908/