พิจารณาใช้curl
แทนwget
:
curl -o "$file" -z "$file" "$uri"
man curl
พูดว่า:
-z
/ --time-cond
<date expression>
(HTTP / FTP) ขอไฟล์ที่ได้รับการแก้ไขช้ากว่าเวลาและวันที่ที่กำหนดหรือไฟล์ที่ถูกแก้ไขก่อนเวลานั้น นิพจน์วันที่สามารถเป็นสตริงวันที่ได้ทุกประเภทหรือหากไม่ตรงกับสตริงภายในใด ๆ ก็จะพยายามรับเวลาจากชื่อไฟล์ที่กำหนดแทน
หาก$file
ไม่จำเป็นต้องมีอยู่แล้วคุณจะต้องใช้-z
เงื่อนไขแฟล็กโดยใช้test -e "$file"
:
if test -e "$file"
then zflag="-z '$file'"
else zflag=
fi
curl -o "$file" $zflag "$uri"
(โปรดทราบว่าเราไม่ได้อ้างถึงการขยายตัวของ$zflag
ที่นี่เนื่องจากเราต้องการให้แยกเป็น 0 หรือ 2 โทเค็น)
หากเชลล์ของคุณรองรับอาร์เรย์ (เช่น Bash) เรามีเวอร์ชั่นที่ปลอดภัยกว่าและสะอาดกว่า:
if test -e "$file"
then zflag=(-z "$file")
else zflag=()
fi
curl -o "$file" "${zflag[@]}" "$uri"