特定のパターンがあるディレクトリを見つけると、権限拒否エラーが発生し、結果はありません。

特定のパターンがあるディレクトリを見つけると、権限拒否エラーが発生し、結果はありません。

Linuxには次のシェルスクリプトがあります。

#!/bin/sh
echo -n "Please enter directory pattern: "
read dirs
find $dirs > /tmp/justbay.txt


allDirs=$(find $dirs ! -readable -prune)
echo $allDirs
lines=$($allDirs | wc -l)
echo $lines

if [ $lines -eq 0 ]; then
 echo "Directory not found"
 exit 1
fi

echo $alldirs

私は次のことができることを知っています。>/dev/null 2>&1ただし、この質問はエラーメッセージとは関係ありません。なぜなら、ディレクトリが存在するかどうかにかかわらず、行数が常にゼロであるように見えるからです。

ベストアンサー1

あなたはそれを行うことができないので、$allDirsおそらく次のことをしたいと思います。

lines=$(echo "$allDirs" | wc -l)

ただし、このバージョンでは$allDirs1行に拡張されるため、常に1が得られます$lines

最も簡単な解決策は、find出力を次に直接パイプすることですwc

lines=$(find "$dirs" ! -readable -prune | wc -l)

おすすめ記事