tar および if 文

tar および if 文

tarファイルにファイルがあるかどうかを確認するスクリプトがあり、常にelseスクリプトセクションに移動するため、問題が発生します。私はそれをしてはならないと確信しています。

日付は「Mon dd」形式(1月11日)です。

echo "enter date: \c"
read date
tarfile=`tar -tvf tarfile.tar | grep some_file | grep "$date"`

if [ -f "$tarfile" ]; then
    echo "yes"
    else
    echo "no"
fi

答え1

ファイルが存在するかどうかを確認するために使用していますが、-fこれは目的の操作ではありません。ファイルはtarファイルに存在しますが、-ftarアーカイブの内部は単独で読み取ることはできません。たとえば、ファイルがtarファイル内の「foo / bar」にある場合、現在のディレクトリに基づいて「foo / bar」を検索しますが、そのディレクトリは存在しません。

grepより良いアプローチは、出力を解析するのではなく終了ステータスを確認することです。

printf 'enter date: '
read date
if tar -tvf tarfile.tar | grep some_file | grep -q "$date"; then
    echo yes
else
    echo no
fi

関連情報