tar 和 if 语句

tar 和 if 语句

我有一个脚本来检查 tar 文件中是否存在文件,但出现了问题,因为它总是转到else脚本的部分。我很确定事情不应该是这样的。

日期采用“Mon dd”格式(Jan 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

相关内容