1

我想阅读命令输出的第一行。但我收到一条空消息。

我用了

ls | read line
echo $line #nothing displayed

为什么行变量为空以及如何解决?

以下代码有效。但我只想阅读第一行

ls | while read line; do 
    echo $line
done

如果 read 无法实现,是否可以使用 grep、awk、sed 等其他功能来实现?

4

2 回答 2

4

确实读取了第一read行,但它正在子shell中执行。但你可以这样做:

ls | { read line; 
  echo $line;
  # other commands using $line;
}
# After the braces, $line is whatever it was before the braces.
于 2013-07-29T13:57:09.350 回答
2

You can use

read line <<< "$(ls)"
printf "%s\n" "$line"

But as already mentioned, please, PLEASE, PLEASE do not parse ls output!

于 2013-08-20T20:25:20.613 回答