Tôi đang viết một kịch bản lệnh shell và tôi cần phải tạo một tệp tạm thời với một phần mở rộng nhất định.Làm cách nào để tạo tệp tạm thời có phần mở rộng cụ thể trong bash?
Tôi đã thử
tempname=`basename $0`
TMPPS=`mktemp /tmp/${tempname}.XXXXXX.ps` || exit 1
và
tempname=`basename $0`
TMPPS=`mktemp -t ${tempname}` || exit 1
không phải làm việc, là người đầu tiên tạo ra một tên tập tin với một chữ "XXXXXX" và lần thứ hai không đưa ra một lựa chọn cho một sự mở rộng.
Tôi cần tiện ích để bản xem trước sẽ không từ chối mở tệp.
Edit: tôi đã kết thúc đi với một sự kết hợp của pid và mktemp trong những gì tôi hy vọng là an toàn:
tempname=`basename $0`
TMPTMP=`mktemp -t ${tempname}` || exit 1
TMPPS="$TMPTMP.$$.ps"
mv $TMPTMP $TMPPS || exit 1
Nó là dễ bị tấn công từ chối dịch vụ, nhưng tôi không nghĩ rằng bất cứ điều gì nghiêm trọng hơn.
FYI: * BSD * mktemp trong Mac OSX không có tùy chọn này, ít nhất không phải trong 10.11. – Jokester
@ Tên của Jokester không phải là lời nói dối. Và do đó, tôi có nghĩa là OSX/macOS không * không * có '--suffix', vẫn là 10,12. –
@CharlieGorichanaz Tệ của tôi. Đoán tôi đã cố gắng để viết "không có tùy chọn này", bởi vì tôi vẫn có thể nhớ gỡ lỗi kịch bản của tôi trong OSX cho sự khác biệt này: ( – Jokester