to_pascal_with_underscores() {
local s=${1^} re='(.*[[:lower:]]_+)([[:lower:]].*)'
while [[ $s =~ $re ]]; do
s=${BASH_REMATCH[1]}${BASH_REMATCH[2]^}
done
echo "$s"
}
to_pascal_with_underscores this_is_a_test
to_pascal_with_underscores to_camel_case__variable
dG9fcGFzY2FsX3dpdGhfdW5kZXJzY29yZXMoKSB7CiAgbG9jYWwgcz0kezFefSByZT0nKC4qW1s6bG93ZXI6XV1fKykoW1s6bG93ZXI6XV0uKiknCiAgd2hpbGUgW1sgJHMgPX4gJHJlIF1dOyBkbwogICAgcz0ke0JBU0hfUkVNQVRDSFsxXX0ke0JBU0hfUkVNQVRDSFsyXV59CiAgZG9uZQogIGVjaG8gIiRzIgp9Cgp0b19wYXNjYWxfd2l0aF91bmRlcnNjb3JlcyB0aGlzX2lzX2FfdGVzdAp0b19wYXNjYWxfd2l0aF91bmRlcnNjb3JlcyB0b19jYW1lbF9jYXNlX192YXJpYWJsZQ==