我有一个脚本来检查 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