Tôi có chức năng sau trong tập lệnh bash. Khi tôi thực thi nó, tôi luôn nhận được một chuỗi trả về từ lệnh ffprobe có lỗi ở dạng:
Đối số '-' được cung cấp dưới dạng tên tệp đầu vào, nhưng '/media/Testing/Sorted/badfile.mp4' đã được chỉ định.
Tôi đã thử di chuyển các đối số sang ffprobe bên trong dấu ngoặc kép cho tên tệp (không giải quyết được sự cố). Tôi đã thử di chuyển các đối số vào một mảng và chuyển "${array[@]}" (không giải quyết được sự cố). Rõ ràng là tôi đang thiếu một cái gì đó rõ ràng ở đây.Tôi làm sai ở đâu?
# TrìnhVideo
#
# Lấy tên tệp đầu vào (có lẽ là tệp video, nhưng chức năng này không
# thực sự cố gắng xác minh điều đó) và giao nó cho ffprobe để thực hiện một số thao tác cơ bản
# xử lý luồng video. Chúng tôi đặt cờ để mọi lỗi gặp phải sẽ
# khiến ffmpeg thoát với bộ mã lỗi. Nếu ffmpeg đặt mã lỗi, chúng tôi
# ghi tên tệp vào một tệp.
#
# ProcessVideo <đường dẫn đến video>
Xử lýVideo()
{
địa phương vfn=$1
cục bộ ec=0
đầu ra cục bộ
echo "Đang kiểm tra video $vfn"
oput=$(ffprobe -loglevel cảnh báo "$vfn" - 2>&1)
ec=$?
# nếu (( ec > 0 ))
# sau đó
# echo "Lỗi thoát $ec $vfn"
# LogErr "Lỗi thoát $ec $vfn"
# fi
# nếu [[ "$oput" == *"moov nguyên tử"* ]]
nếu [[ -n "$oput" ]]
sau đó
echo "Chuỗi lỗi $vfn"
LogErr "Chuỗi lỗi $vfn"
LogErr "$oput"
fi
}
Lưu ý rằng LogErr trong tập lệnh ở trên là một chức năng khác - tất cả những gì nó làm là lấy chuỗi đã truyền và ghi nó vào một tệp nhật ký đã chỉ định. Nếu ai đó nghĩ rằng nó có liên quan đến vấn đề, tôi sẽ đăng nó, nhưng tôi không nghĩ vậy.