Afghanistan suffered a second Twenty20 defeat in as many days as they were edged out by Bangladesh in a dress rehearsal for the tri-series final.

Rashid Khan's men had seen a record run of 12 consecutive wins ended when they lost to Zimbabwe on Friday, and another reverse followed thanks to an inspirational knock from Bangladesh captain Shakib Al Hasan.

These two sides were already assured of places in Tuesday's final, with Zimbabwe out, but there was plenty for them to mull over from a topsy-turvy affair.

Afghanistan were sent in to bat first and started steadily before collapsing from 75-0 to 96-5, Afif Hossain – who claimed 2-9 from three overs - making the crucial breakthrough.

Shafiqullah's unbeaten 23 helped Afghanistan recover to a semi-respectable 138-7 and they looked to be in a promising position when Bangladesh struggled early on, 12-2 in the fourth over.

But Shakib (70 not out) lifted his side, continuing to battle away even as wickets started to fall around him, with Rashid Khan taking a pair despite briefly departing with an apparent hamstring issue.

Mosaddek Hossain joined his skipper in a strong late stand and Bangladesh reached their target with four wickets in hand and with an over to spare.