The only time I can remember seeing yes/no used in a format like this is YAML, and that caused problems[1].
[1]: https://hitchdev.com/strictyaml/why/implicit-typing-removed/
I don't know if I prefer this over treating everything as a string and letting readers/writers decide on their own how to parse things, but it seems like a much more reasonable approach than YAML's.
I'm interested in what you mean when you mention shell scripts; I find it more idiomatic to write:
if [ true ]; then echo test; fi
Over if [ yes ]; then echo test; fi
Because the behavior is more consistent when you try to use it in other constructs: while true; do echo test; done
Versus yes | while read _; do echo test; done
Or maybe while yes | :; do echo test; done
There's also no "no" command. To get that effect, you'd have to confusingly write: yes no
Is there a particular instance of yes/no in shell scripting that you had in mind?Yes!
I see them all the time in various build scripts, especially for Slackware packages / SlackBuild scripts; it's a pretty common convention to use yes/no values for enabling/disabling (respectively) various build options.
OpenBSD's rc.conf(.local) also uses "NO" to indicate that a service/daemon should be disabled entirely; for example, the default httpd_flags=NO in rc.conf entirely disables httpd - unless, of course, you re-enable it later with httpd_flags= in rc.conf.local. "YES" is also sometimes used, e.g. library randomization being enabled by default via library_aslr=YES.
(The more locale agnostic ⊤ and ⊥ (https://en.wikipedia.org/wiki/Verum and https://en.wikipedia.org/wiki/Up_tack), IMO are a bit elitist and difficult to type)
I agree that "true" and "false" would be clearer than "yes" and "no", but the fact that "yes" and "no" are English words isn't an issue.
If it sounds stupid when you say it out loud, it _is_ stupid.