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ファイルに存在しますが、-f
tarアーカイブの内部は単独で読み取ることはできません。たとえば、ファイルが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