0

lsそのため、コマンドを にパイプする際に問題が発生していgrepます。基本的ls -lに、一部が欠落しているファイルの for ループ内で実行しているためNo file or directory found、3 行でエラーが発生します。私が理解できないのは、それらの行のみを解析して別のファイル/変数に出力する方法です。

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

これを実行しようとすると、3 つのエラーが出力されますが、これらのエラーを別のファイルにパイプすることができません。stderrの問題だと思いますが、よくわかりません。

4

2 に答える 2

5

bash では、パイプの後のコマンドでとの|&両方を取得するために使用できます。stdoutstderr

ただし、テストを使用する方が便利な場合があります。

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