Cho mảnh bash này:
PARMS='-rvu'
PARMS+=" --delete --exclude='.git'"
echo $PARMS
rsync ${PARMS} . ${TARGET}
Tiếng vang hiển thị chuỗi PARMS như mong đợi, không có lỗi nào được hiển thị, nhưng rsync âm thầm hoạt động như thể các tùy chọn được thêm bởi + = không tồn tại. Tuy nhiên, điều này hoạt động như mong đợi:
PARMS='-rvu'
rsync ${PARMS} --delete --exclude='.git' . ${TARGET}
Tôi đoán rằng tôi đã làm hỏng cái gì đó với dấu ngoặc kép (luôn có vấn đề với những cái đó), nhưng không chắc chắn chính xác những gì và tại sao các tùy chọn bị bỏ qua mặc dù chuỗi dường như đã được xây dựng chính xác.
bash
phiên bản 4.2.25 mà không có bất kỳ thay đổi nào.
echo "$PARMS"
vàrsync "${PARMS}"
...