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

관련 정보