Alan Shadrake had offered to apologise for causing offence, but said he would never apologise for his book, Once a Jolly Hangman: Singapore Justice in the Dock.
High court judge Quentin Loh, who had found Mr Shadrake guilty of contempt earlier this month, ordered him to spend six weeks in jail, pay a fine of 20,000 Singapore dollars (10,000), and court costs. If he fails to pay the fine, he will be jailed for two more weeks, Mr Loh said.
The prosecution, representing the attorney-general's office, had demanded 12 weeks' jail.
"Had he made amends, I would have dealt with him very differently," Mr Loh said, adding that the writer showed "a reckless disregard for the truth" and "a complete lack of remorse".
Mr Shadrake was freed until 24 November, during which time he can launch an appeal.