I wanted to know whether scripts written for dash, ash, and sh are 100% compatible?
Are there any added features to dash or ash, or syntax change?
From what I heard, ash is a direct descendant of sh.
The short answer is no, they're not 100% compatible.
But most of the shells are pretty close to the basic, so you would only rarely bump into inconsistencies. In fact, most shells differ not much by added syntax, but by some extra features like tab-completion and similar.
The difference between those shells is in optimizations and performance. They're less feature-rich then
It should be mentioned that on some systems, notably Debian, /bin/ash is not available: