所以我遇到了管道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
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做时,它输出三个错误但我无法将这些错误传递给另一个文件,如果这是有道理的.我认为这与stderr有关,但我不确定.
使用bash,你可以简单地使用|&,以同时获得stdout,并stderr在管道之后的命令.
但是使用测试可能更有用:
if [[ -e "$line" ]]; then
ls -l "$line"
else
echo "File $line doesn't exist"
fi
Run Code Online (Sandbox Code Playgroud)