The star all-rounder also missed the recent Test series against Sri Lanka after sustaining the injury during the one-day international tri-series final against the same opponents in January.
Bangladesh, who lost the tri-series final and the Test series, initially included Shakib in their squad for the two T20 matches, the first of which is on Thursday in Dhaka.
"He was making good progress so we thought he might be available for both the matches. But it seems now he cannot play the first Twenty20," said chief selector Minhajul Abedin.
The second match will be played in Sylhet on Sunday.
Selectors asked left-arm spinner Nazmul Hossain to join the squad as a replacement for Shakib in the first game. But the Bangladesh Cricket Board has yet to name a captain.
Shakib replaced pace bowler Mashrafe Mortaza as Bangladesh's T20 skipper in the series against South Africa in October.