0

所以我在将ls命令传送到grep. 我基本上ls -l在一个缺少一些文件的文件的 for 循环中运行,所以它给了我No file or directory found三行的错误。我不知道如何只解析这些行并将其输出到另一个文件/变量。

for i in $file
do
    line=`/bin/echo $i | sed 's/source1_dir/dest1_dir/g'`
    /bin/ls -l $line | grep -i "No file"
done

当我尝试这样做时,它会输出三个错误,但如果有意义的话,我无法将这些错误传送到另一个文件。我认为这是 stderr 的问题,但我不确定。

4

2 回答 2

5

使用 bash,您可以简单地使用在管道之后的命令|&中获取stdout和获取。stderr

但使用测试可能更有用:

if [[ -e "$line" ]]; then
    ls -l "$line"
else
    echo "File $line doesn't exist"
fi
于 2013-06-11T14:21:05.407 回答
2

使用标准错误重定向。就像是:

/bin/ls -l $line 2>&1 | grep -i "No file"
于 2013-06-11T13:40:31.393 回答