[Question]
  [
> 
> "Baby Shark" is a children's song about a family of sharks. Having long been popular as a campfire song, it has been popularized since the mid-2000s by social media, online video and radio. - [Wikipedia](https://en.wikipedia.org/wiki/Baby_Shark)
> 
> 
> 
Write program that takes no input, and writes the following text to the standard output or an arbitrary file:
```
Baby Shark doo doo doo doo doo doo
Baby Shark doo doo doo doo doo doo
Baby Shark doo doo doo doo doo doo
Baby Shark!
Daddy Shark doo doo doo doo doo doo
Daddy Shark doo doo doo doo doo doo
Daddy Shark doo doo doo doo doo doo
Daddy Shark!
Mommy Shark doo doo doo doo doo doo
Mommy Shark doo doo doo doo doo doo
Mommy Shark doo doo doo doo doo doo
Mommy Shark!
Grandpa Shark doo doo doo doo doo doo
Grandpa Shark doo doo doo doo doo doo
Grandpa Shark doo doo doo doo doo doo
Grandpa Shark!
Grandma Shark doo doo doo doo doo doo
Grandma Shark doo doo doo doo doo doo
Grandma Shark doo doo doo doo doo doo
Grandma Shark!
```
This is code golf — shortest code wins.
Found this on Reddit^[1](https://www.reddit.com/r/rust/comments/aqz4ed/_/)^[2](https://www.reddit.com/r/ProgrammerHumor/comments/aqkdf9/baby_shark/), and it seems like an interesting challenge to golf.
**Updates:**
No newline between stanzas, that makes it too easy :)
Leading/trailing newlines are okay.
  
[Answer]
## Emojicode, 292 bytes (140 characters)
```
🏁🍇🔤Baby🔤➡️b🔤Daddy🔤➡️y🔤Mommy🔤➡️o🔤Grandpa🔤➡️g🔤Grandma🔤➡️a🔤 Shark🔤➡️s🔤 doo🔤➡️d🍨b y o g a🍆➡️f🔂m f🍇🔂i🆕⏩⏩0 3❗️🍇😀🍪m s d d d d d d🍪️❗️🍉😀🍪m s🔤!🔤🍪❗️🍉🍉
```
[Run it](https://tio.run/##S83Nz8pMzk9JNfv//8P8/sYP83vbP8yfssQpMakSRD@at/D9jv4kENMlMSUFSQzM9M3PzUUSywcx3YsS81IKEhGi6XDRXCRRMFMhOCOxKBshWAwWTMnPRwilAJ20IkmhUiFfIV0BqKm3DSKeBlTSlKuQBnVxU@aH@W1TH/WvBCIDBeNHc6cD1UDkZjQA6VW5CsUKKQgIEgKqgKvrRFIHslwRRID4yCp6O///BwA)
Expanded out:
```
🏁🍇
  🔤Baby🔤 ➡️ b
  🔤Daddy🔤 ➡️ y
  🔤Mommy🔤 ➡️ o
  🔤Grandpa🔤 ➡️ g
  🔤Grandma🔤 ➡️ a
  🔤 Shark🔤 ➡️ s
  🔤 doo🔤 ➡️ d
  🍨b y o g a🍆➡️f
  🔂m f🍇
    🔂i🆕⏩⏩0 3❗️🍇
      😀🍪m s d d d d d d🍪️❗️
    🍉
    😀🍪m s🔤!🔤🍪❗️
  🍉
🍉
```
Explained (per the [Emojicode](https://www.emojicode.org/docs/reference/welcome.html) doc):
```
🍇🍉
```
The same as a `{` and `}` (e.g. a code block)
```
🏁
```
The "program start" (e.g. `int main()`)
```
🔤Baby🔤 ➡️ b
```
Variable assignment (e.g. `const char* b = "Baby";`)
```
🍨b y o g a🍆➡️f
```
Says, create a list of values between 🍨 and 🍆 and assign (➡️) to `f` (e.g. `const char* f[] = {b,y,o,g,a};`)
```
🔂m f🍇 ... 🍉
```
This line says to loop over the elements in `f` using the alias `m`, where the `...` is the code between 🍇 and 🍉.
```
🔂 i 🆕⏩⏩ 0 3❗️🍇 ... 🍉
```
This line says to loop over the range [0,3), where the `...` is the code between 🍇 and 🍉.
```
😀🍪 ... 🍪️❗️
```
This line says to print the format specified in `...` (e.g. `printf("%s\n");`)
The code translated to C:
```
#include <stdio.h>
int main() {
  const char* b = "Baby";
  const char* y = "Daddy";
  const char* o = "Mommy";
  const char* g = "Grandpa";
  const char* a = "Grandma";
  const char* s = " Shark";
  const char* d = " doo";
  const char* f[] = {b,y,o,g,a};
  int m = 0, i = 0;
  for (; m < 5; ++m) {
    for (i = 0; i < 3; ++i) {
      printf("%s%s%s%s%s%s%s%s\n", f[m], s, d, d, d, d, d, d);
    }
    printf("%s%s!\n", f[m], s);
  }
  return 0;
}
```
Following this, the original code (posted below for posterity) had some issues; mostly that the 🏁🍇🍉 block was not included for those who wish to run it, and the emoji's were not actually properly escaped, to that, here is the actual running version of that code:
## Original modified to run: Emojicode, 224 bytes (67 characters)
```
🏁🍇🍨🔤👶🔤🔤👨🔤🔤🤱🔤🔤👴🔤🔤👵🔤🍆➡️f🔂m f🍇🔂i🆕⏩⏩0 3❗️🍇😀🍪m🔤🦈💩💩💩💩💩💩🔤🍪️❗️🍉😀🍪m🔤🦈!🔤🍪❗️🍉🍉
```
Expanded out:
```
🏁🍇
  🍨
    🔤👶🔤
    🔤👨🔤
    🔤🤱🔤
    🔤👴🔤
    🔤👵🔤
  🍆 ➡️ f
  🔂 m f 🍇
    🔂 i 🆕⏩⏩ 0 3❗️🍇
      😀🍪m🔤🦈💩💩💩💩💩💩🔤🍪️❗️
    🍉
    😀🍪m🔤🦈!🔤🍪❗️
  🍉
🍉
```
Which produces the output:
```
👶🦈💩💩💩💩💩💩
👶🦈💩💩💩💩💩💩
👶🦈💩💩💩💩💩💩
👶🦈!
👨🦈💩💩💩💩💩💩
👨🦈💩💩💩💩💩💩
👨🦈💩💩💩💩💩💩
👨🦈!
🤱🦈💩💩💩💩💩💩
🤱🦈💩💩💩💩💩💩
🤱🦈💩💩💩💩💩💩
🤱🦈!
👴🦈💩💩💩💩💩💩
👴🦈💩💩💩💩💩💩
👴🦈💩💩💩💩💩💩
👴🦈!
👵🦈💩💩💩💩💩💩
👵🦈💩💩💩💩💩💩
👵🦈💩💩💩💩💩💩
👵🦈!
```
[Run it](https://tio.run/##S83Nz8pMzk9JNfv//8P8/sYP83vbgXjFh/lTlnyYP3EbhAazVyDYSzYiiW9BYm@F0L1tj@YtfL@jPw3IbcpVSIOYOqUp88P8tqmP@lcCkYGC8aO504FqIHIzGoD0qlyI9mUdH@ZPWokdg41fBdQH192JoVsRpgxZTW/n//8A)
Where in you have the individual emoji's representing the words:
```
👶 -> Baby
👨 -> Daddy
🤱 -> Mommy
👴 -> Grandpa
👵 -> Grandma
🦈 -> Shark
💩 -> doo
```
## Original: Emojicode, 138 bytes (47 characters)
```
🍨👶👨🤱👴👵🍆➡️f🔂m f🍇🔂i🆕⏩⏩0 3❗️🍇😀m🦈💩💩💩💩💩💩❗️🍉😀m🦈!❗️🍉
```
Expanded out:
```
🍨👶👨🤱👴👵🍆➡️f
🔂m f🍇
  🔂 i 🆕⏩⏩ 0 3❗️🍇
    😀 m 🦈💩💩💩💩💩💩❗️
  🍉
  😀 m 🦈!❗️
🍉
```
[Answer]
# x86-16 machine code, IBM PC DOS, ~~108~~ 107 bytes
```
00000000: bd42 01e8 1600 bd47 01e8 1000 bd4d 01e8  .B.....G.....M..
00000010: 0a00 bd53 01e8 0400 c646 056d b409 b104  ...S.....F.m....
00000020: 8bd5 cd21 ba5b 01cd 21e2 06ba 6701 cd21  ...!.[..!...g..!
00000030: c3b3 06ba 6201 cd21 4b75 fbba 6801 cd21  ....b..!Ku..h..!
00000040: ebde 4261 6279 2444 6164 6479 244d 6f6d  ..Baby$Daddy$Mom
00000050: 6d79 2447 7261 6e64 7061 2420 5368 6172  my$Grandpa$ Shar
00000060: 6b24 2064 6f6f 2421 0d0a 24              k$ doo$!..$
```
Unassembled:
```
BD 0142         MOV  BP, OFFSET BABY        ; Baby Shark
E8 011C         CALL VERSE
BD 0147         MOV  BP, OFFSET DADDY       ; Daddy Shark
E8 011C         CALL VERSE
BD 014D         MOV  BP, OFFSET MOMMY       ; Mommy Shark
E8 011C         CALL VERSE
BD 0153         MOV  BP, OFFSET GRAND       ; Grandpa/ma Shark
E8 011C         CALL VERSE
C6 46 05 6D     MOV  BYTE PTR [BP][5], 'm'  ; change 'p' to 'm'
            VERSE:
B4 09           MOV  AH, 9                  ; DOS API display string function
B1 04           MOV  CL, 4                  ; loop verse counter
            LOOP_VERSE:
8B D5           MOV  DX, BP                 ; load shark name from BP
CD 21           INT  21H                    ; display shark name
BA 015B         MOV  DX, OFFSET SHARK       ; load 'Shark'
CD 21           INT  21H                    ; display 'Shark'
E2 06           LOOP LOOP_DOO               ; if not last line, write 'doo's
BA 0167         MOV  DX, OFFSET BANG        ; otherwise end with a bang
CD 21           INT  21H                    ; display !, CRLF
C3              RET                         ; return from CALL or to DOS
            LOOP_DOO:
B3 06           MOV  BL, 6                  ; loop 'doo' 6 times
BA 0162         MOV  DX, OFFSET DOO         ; load 'doo' string
            PRINT_DOO:
CD 21           INT  21H                    ; display 'doo'
4B              DEC  BX                     ; decrement doo count
75 FB           JNZ  PRINT_DOO              ; if not last doo, start again
BA 0168         MOV  DX, OFFSET CRLF        ; load CRLF string
CD 21           INT  21H                    ; display CRLF
EB DE           JMP  LOOP_VERSE             ; repeat verse
BABY    DB  'Baby$'
DADDY   DB  'Daddy$'
MOMMY   DB  'Mommy$'
GRAND   DB  'Grand'
PA      DB  'pa$'
SHARK   DB  ' Shark$'
DOO     DB  ' doo$'
BANG    DB  '!'
CRLF    DB  0DH,0AH,'$'
```
[Try it online!](http://twt86.co?c=vUIB6BYAvUcB6BAAvU0B6AoAvVMB6AQAxkYFbbQJsQSJ6s0hulsBzSHiBrpnAc0hw7MGumIBzSFLdfu6aAHNIeveQmFieSREYWRkeSRNb21teSRHcmFuZHBhJCBTaGFyayQgZG9vJCENCiQ%3D)
***Output***
[![DOS DIR, SHARK](https://i.stack.imgur.com/TsPKA.png)](https://i.stack.imgur.com/TsPKA.png)
*(TODO: update this screenshot for one less byte...)*
[Answer]
# [Python 2](https://docs.python.org/2/), 93 bytes
```
for w in"Baby Daddy Mommy Grandpa Grandma".split():w+=" Shark";print(w+" doo"*6+"\n")*3+w+"!"
```
[Try it online!](https://tio.run/##K6gsycjPM/r/Py2/SKFcITNPySkxqVLBJTElpVLBNz83t1LBvSgxL6UgEULnJirpFRfkZJZoaFqVa9sqKQRnJBZlK1kXFGXmlWiUaysppOTnK2mZaSvF5ClpahlrA4UUlf7/BwA "Python 2 – Try It Online")
**94 bytes**
```
for w in"Baby Daddy Mommy Grandpa Grandma".split():print((" doo"*6+"\n%s Shark"%w)*4)[25:]+"!"
```
[Try it online!](https://tio.run/##K6gsycjPM/r/Py2/SKFcITNPySkxqVLBJTElpVLBNz83t1LBvSgxL6UgEULnJirpFRfkZJZoaFoVFGXmlWhoKCmk5OcraZlpK8XkqRYrBGckFmUrqZZraploRhuZWsVqKykq/f8PAA "Python 2 – Try It Online")
[Answer]
# [05AB1E](https://github.com/Adriandmen/05AB1E/wiki/Commands), ~~50~~ 41 [bytes](https://github.com/Adriandmen/05AB1E/wiki/Codepage)
```
“‡ÍÊÐ¢×myîºpaîºma“#ð«'ã¢«™v…doo6иyšÐy'!«»
```
~~Last part `v4FN3Qiy'!«ë…doo6иyšðý},` can definitely be golfed a bit..~~ And I was right, -9 bytes thanks to *@Emigna* (even more than I was expecting).
[Try it online.](https://tio.run/##AVAAr/9vc2FiaWX//@KAnOKAocONw4rDkMKiw5dtecOuwrpwYcOuwrptYeKAnCPDsMKrJ8OjwqLCq@KEonbigKZkb2820Lh5xaHDkHknIcKrwrv//w)
**Explanation:**
```
“‡ÍÊÐ¢×myîºpaîºma“ # Push dictionary string "baby daddy mommy grandpa grandma"
 #                 # Split by spaces: ["baby","daddy","mommy","grandpa","grandma"]
  ð«               # Append a space to each
    'ã¢«          '# Append dictionary string "shark" to each
        ™          # Title-case each word
v                  # Loop `y` over these strings
 …doo              #  Push string "doo"
     6и            #  Repeat it 6 times as list
       yš          #  Prepend the string `y` at the front of the list
         Ð         #  Triplicate this list
 y'!«             '#  Push string `y`, concatted with a "!"
 »                 #  Join everything on the stack by newlines
                   #  (and each list implicitly by spaces)
                   # (and after the loop, output the result implicitly)
```
[See this 05AB1E tip of mine (section *How to use the dictionary?*)](https://codegolf.stackexchange.com/a/166851/52210) to understand why `“‡ÍÊÐ¢×myîºpaîºma“` is `"baby daddy mommy grandpa grandma"` and `'ã¢` is `"shark"`.
[Answer]
# PowerShell, ~~88~~ ~~86~~ ~~85~~ ~~80~~ ~~79~~ 76 bytes
-5 bytes thanks to @mazzy  
-1 byte thanks to @Joey  
-3 bytes thanks to @AdmBorkBork
```
echo Baby Daddy Mommy Grandpa Grandma|%{,(($a="$_ Shark")+" doo"*6)*3;"$a!"}
```
[Try it online!](https://tio.run/##K8gvTy0qzkjNyfn/PzU5I1/BKTGpUsElMSWlUsE3Pze3UsG9KDEvpSARQucm1qhW62hoqCTaKqnEKwRnJBZlK2lqKymk5OcraZlpahlbK6kkKirV/v8PAA "PowerShell – Try It Online")
We've certainly come a long way.
# PowerShell (with Text to Speech), 156 bytes
This is NOT up to spec, but it's kinda funny. Thanks to @rkeet for the idea!
```
Add-Type -a System.Speech;echo Baby Daddy Mommy Grandpa Grandma|%{(New-Object Speech.Synthesis.SpeechSynthesizer).Speak((($a="$_ Shark")+" doo"*6)*3+" $a")}
```
.NET Text to speech pronunciation is... well... interesting. Keep this in mind when listening. Enjoy!
[Answer]
# [SOGL](https://github.com/dzaima/SOGLOnline), 40 [bytes](https://github.com/dzaima/SOGL/blob/master/chartable.md)
```
o⅝ηvΒvPΝ┘÷ΖnΨ‘θ{"nOe;‘+ū:" doo”6*+TTPPļ!
```
[Try it here!](https://dzaima.github.io/SOGLOnline/?code=byV1MjE1RCV1MDNCN3YldTAzOTJ2UCV1MDM5RCV1MjUxOCVGNyV1MDM5Nm4ldTAzQTgldTIwMTgldTAzQjglN0IlMjJuT2UlM0IldTIwMTgrJXUwMTZCJTNBJTIyJTIwZG9vJXUyMDFENiorVFRQUCV1MDEzQyUyMQ__,v=0.12)
[Answer]
# [Java (JDK)](http://jdk.java.net/), 135 bytes
```
v->{for(var s:"Baby Daddy Mommy Grandpa Grandma".split(" "))System.out.println(((s+=" Shark")+" doo".repeat(6)+"\n").repeat(3)+s+"!");}
```
[Try it online!](https://tio.run/##NY4/T8MwEMX3forjJltRvSAxUNoBkJg6RWIBhmucFKf@J/scKary2YMpYnq637t370aaaDvqy9pZyhmOZDxcNwCxnKzpIDNxlSkYDa56ouVk/PnjCyids7ytAoz1iCpsrBqK79gEr16Cz8X16em9Rg8w7Ndpe7gOIYmJEuRHfKbTDK@k9QzH4NwMb4m8jvSnjlDlaA0LBJSynTP3ToXCKtZ@tl4IkZs9QvtN6YKyQdAhoEp97InFQwWfHuX/fC@b3OAdyt2y7m4vD4q6ro8sfLFW/rJls6w/ "Java (JDK) – Try It Online")
[Answer]
# [Haskell](https://www.haskell.org/), 122 113 108 106 104 bytes
```
s=" Shark";m=do x<-words"Baby Daddy Mommy Grandpa Grandma";("aaa">>x++s++(s>>" doo")++"\n")++x++s++"!\n"
```
[Try it online!](https://tio.run/##JclBCsIwEEbhq4yzShk8QU0WIrhy1a2bX0aotJOUpGJz@qh09fF4I8r0nOfWimcaRuSJe/OaaDsdPylr4TMelS5QrXRLZpWuGVEX7Bq4dwyAQ9hEiogrITBpStyJ8D3@2Q8fftUMr0ielvc6rNlZ174 "Haskell – Try It Online")
* `"aaa">>x` replicates `x` 3 times, as `"aaa"` has length 3.
* `s>>" doo"` replicates `" doo"` 6 times, as `" Shark"` has length 6!
* *2 bytes saved thanks to @Fox*
* *2 bytes saved thanks to @Laikoni*
[Answer]
# [Retina 0.8.2](https://github.com/m-ender/retina/wiki/The-Language/a950ad7d925ec9316e3e2fb2cf5d49fd15d23e3d), ~~77~~ ~~75~~ 74 bytes
```
Baby¶Daddy¶MommyGpaGma
G
¶Grand
.+
$&s$&s$&s$&S!
s
S6$*O¶
O
 doo
S
 Shark
```
[Try it online!](https://tio.run/##K0otycxL/P@fyykxqfLQNpfElBQg5Zufm1vpXpDonpvI5c51aJt7UWJeCpeeNpeKWjEMBStyFXMFm6lo@R/axuXPpZCSn88VzKUQnJFYlP3/PwA "Retina 0.8.2 – Try It Online") Explanation:
```
Baby¶Daddy¶MommyGpaGma
G
¶Grand
```
Insert the relations on separate lines.
```
.+
$&s$&s$&s$&S!¶
```
Expand into four lines.
```
s
S6$*O¶
O
 doo
S
 Shark
```
Expand the placeholders.
~~69~~ 68 bytes in [Retina](https://github.com/m-ender/retina/wiki/The-Language) 1:
```
Baby¶Daddy¶MommyGpaGma
G
¶Grand
.+
$& Shark
.+
3*$($&6*$( doo)¶)$&!
```
[Try it online!](https://tio.run/##K0otycxLNPz/n8spMany0DaXxJQUIOWbn5tb6V6Q6J6byOXOdWibe1FiXgqXnjaXippCcEZiUTaIbayloqGiZgYkFVLy8zUPbdNUUVP8/x8A "Retina – Try It Online") Explanation:
```
Baby¶Daddy¶MommyGpaGma
G
¶Grand
```
Insert the relations on separate lines.
```
.+
$& Shark
```
Append Shark to each.
```
.+
3*$($&6*$( doo)¶)$&!
```
Expand into whole verses.
[Answer]
# Python 3, 105 97 96 bytes
```
for x in"Baby","Daddy","Mommy","Grandpa","Grandma":z=x+' Shark';print((z+' doo'*6+"\n")*3+z+"!")
```
[Try it online!](https://tio.run/##K6gsycjPM/7/Py2/SKFCITNPySkxqVJJR8klMSUFRPvm5@aCaPeixLyUgkQYKzdRyaqgKDOvREOjQltdITgjsShbHchIyc9X1zLTVorJU9LUMtau0FECSykqaf7/DwA)
A simple Python 3 solution. (9 bytes saved by Jo King and Quintec)
[Answer]
# bash, 78 bytes
```
printf %s\\n {Baby,Daddy,Mommy,Grand{p,m}a}\ Shark{" `echo doo{,,}{,}`"{,,},!}
```
[TIO](https://tio.run/##FcY7CoAwDADQq0TBLacQwcnJtUNTq1SkH1qXEnL2iG96jlpQLfVO7wVTMyYBz@Q6LuR9xy3H2HGtlDwXjEJiYA9UHx7BnkfI4HNmRGEUO/7BQVQ/)
73 bytes if trailing space is allowed
```
echo '
'{Baby,Daddy,Mommy,Grand{p,m}a}\ Shark{" `echo doo{,,}{,}`"{,,},!}
```
[Answer]
# [Perl 6](https://github.com/nxadm/rakudo-pkg), ~~79~~ 78 bytes
```
(<Baby Daddy Mommmy Grandpa Grandma>X~" Shark"X~ |((" doo"x 6)xx 3),'!')>>.say
```
[Try it online!](https://tio.run/##K0gtyjH7/1/DxikxqVLBJTElpVLBNz83N7dSwb0oMS@lIBFC5ybaRdQpKQRnJBZlK0XUKdRoaCgppOTnK1UomGlWVCgYa@qoK6pr2tnpFSdW/v8PAA "Perl 6 – Try It Online")
Pretty simple.
### Explanation:
```
 <...>X~                                  # Combine family members
        " Shark"X~                        # With "Shark" and
                   |((" doo"x 6)xx 3)     # doo repeated 6 times then 3 times
                                     ,'!' # Then !
(                                        )>>.say  # And print each line
```
[Answer]
# [Ruby](https://www.ruby-lang.org/), 82 bytes
```
%w(Baby Daddy Mommy Grandpa Grandma).map{|a|puts [a+" Shark"]*4*(" doo"*6+?\n)+?!}
```
[Try it online!](https://tio.run/##KypNqvz/X7VcwykxqVLBJTElpVLBNz83t1LBvSgxL6UgEULnJmrq5SYWVNck1hSUlhQrRCdqKykEZyQWZSvFaploaSgppOTnK2mZadvH5Glq2yvW/v8PAA "Ruby – Try It Online")
[Answer]
# [///](https://esolangs.org/wiki////), 124 bytes
```
/*/$!
//)/Grand//(/Baby//'/Mommy//&/Daddy//%/ doo//$/ Shark//#/a")//"/$%%%%%%
/("("("(*&"&"&"&*'"'"'"'*)p#p#p#pa*)m#m#m#ma$!
```
[Try it online!](https://tio.run/##HcY7DsIwEADRPqdI1s7HbuYOCImKihNs5EiRwBjFVU5vop3XTP1o3bfaGhE/dBB4HPpNsHDT9YSZZ8n5mom7pnTNSJ9KAU//2vV4g0MlgOBHq2MREycxcRYTw88ZjSE7o35o7Q8 "/// – Try It Online")
[Answer]
# JavaScript, 104 bytes
More golfing to follow.
```
_=>`Baby
Daddy
Mommy
Grandpa
Grandma`.replace(/.+/g,x=>(s=(x+=` Shark`)+` doo`.repeat(6)+`
`)+s+s+x+`!`)
```
[Try It Online!](https://tio.run/##JYrLDsIgEADvfEW9LUHbmzd6MCY9efID3BVofZRuA42Br0eimcMkk3nRh6IJz3U7LGxdGXW56R5PdM/iTNZmcWHvsxgCLXalvz1hG9w6k3HQtaqb9kn3EDUkpbG5Pii8USpsLPNvdLTBsQZRa6wkhTuUxfASeXbtzBOMIGX5Ag)
[Answer]
# PostgreSQL, ~~162~~ ~~156~~ 138 bytes
```
select a||' Shark'||replace(b,'1',repeat(' doo',6))from unnest('{Baby,Daddy,Mommy,Grandpa,Grandma}'::text[])a,unnest('{1,1,1,!}'::text[])b
```
Ungolfed
```
select 
    a || ' Shark' || replace(b,'1',repeat(' doo',6))
from unnest('{Baby,Daddy,Mommy,Grandpa,Grandma}'::text[]) a
    ,unnest('{1,1,1,!}'::text[]) b
```
Saved ~~6~~ 24 bytes thanks to [`@Nahuel Fouilleul`](https://codegolf.stackexchange.com/users/70745/nahuel-fouilleul)!
* use `||` instead of `concat()`
* use `unnest('{foo,bar}'::text[])` instead of `regexp_split_to_table('foo,bar')`
[DB<>fiddle](https://www.db-fiddle.com/f/3eXzvhDLVnxsuwRy3qAuJs/5)
[Answer]
# [Emotion](https://github.com/Quantum64/Emotion), 65 [bytes](https://quantum64.github.io/EmotionBuilds/1.1.0///?state=JTdCJTIybW9kZSUyMiUzQSUyMmNvZGVwYWdlJTIyJTdE)
```
😇😃😟🥕😤😦😇😅🧖💥😛🥒🥥🧖😨🤕😇😁💟😫😳🤠😇😆💟😫😳🌽🍌😘😁🚵😙🚵💥😘😁🧟👍🧟💥🚣❤🤣🏃😢🤯😒😁😵😔😧🧐🤠😇😅🧖💥😛🥒🥥🧗😧🧐🤠
```
Explanation
```
😇😃😟🥕 Push literal doo
😤 Push five copies of the first stack value.
😦 Collapse all stack values into a string seperated by spaces, then push that string.
😇😅🧖💥😛🥒🥥🧖 Push literal  Shark 
😨 Push the difference of the second and first stack values.
🤕 Store the first stack value in the a register.
😇😁💟😫😳🤠 Push literal Grandma
😇😆💟😫😳🌽🍌 Push literal Grandpa
😘😁🚵😙🚵💥 Push literal Mommy
😘😁🧟👍🧟💥 Push literal Daddy
🚣❤ Push literal Baby
🤣 Push literal 6
🏃😢 Push stack values into a list of the size of the first stack value starting with the second stack value.
🤯 Enter an iteration block over the first stack value and push the iteration element register at the begining of each loop.
😒 Push three copies of the first stack value.
😁 Push literal 3
😵 Enter an iteration block over the first stack value.
😔 Push the value contained in the a register.
😧 Push the sum of the second and first stack values.
🧐 Print the first stack value, then a newline.
🤠 Ends a control flow structure.
😇😅🧖💥😛🥒🥥🧗 Push literal  Shark!
😧 Push the sum of the second and first stack values.
🧐 Print the first stack value, then a newline.
🤠 Ends a control flow structure.
```
[Try it online!](https://quantum64.github.io/EmotionBuilds/1.1.0///?state=JTdCJTIyaW50ZXJwcmV0ZXJDb2RlJTIyJTNBJTIyJUYwJTlGJTk4JTg3JUYwJTlGJTk4JTgzJUYwJTlGJTk4JTlGJUYwJTlGJUE1JTk1JUYwJTlGJTk4JUE0JUYwJTlGJTk4JUE2JUYwJTlGJTk4JTg3JUYwJTlGJTk4JTg1JUYwJTlGJUE3JTk2JUYwJTlGJTkyJUE1JUYwJTlGJTk4JTlCJUYwJTlGJUE1JTkyJUYwJTlGJUE1JUE1JUYwJTlGJUE3JTk2JUYwJTlGJTk4JUE4JUYwJTlGJUE0JTk1JUYwJTlGJTk4JTg3JUYwJTlGJTk4JTgxJUYwJTlGJTkyJTlGJUYwJTlGJTk4JUFCJUYwJTlGJTk4JUIzJUYwJTlGJUE0JUEwJUYwJTlGJTk4JTg3JUYwJTlGJTk4JTg2JUYwJTlGJTkyJTlGJUYwJTlGJTk4JUFCJUYwJTlGJTk4JUIzJUYwJTlGJThDJUJEJUYwJTlGJThEJThDJUYwJTlGJTk4JTk4JUYwJTlGJTk4JTgxJUYwJTlGJTlBJUI1JUYwJTlGJTk4JTk5JUYwJTlGJTlBJUI1JUYwJTlGJTkyJUE1JUYwJTlGJTk4JTk4JUYwJTlGJTk4JTgxJUYwJTlGJUE3JTlGJUYwJTlGJTkxJThEJUYwJTlGJUE3JTlGJUYwJTlGJTkyJUE1JUYwJTlGJTlBJUEzJUUyJTlEJUE0JUYwJTlGJUE0JUEzJUYwJTlGJThGJTgzJUYwJTlGJTk4JUEyJUYwJTlGJUE0JUFGJUYwJTlGJTk4JTkyJUYwJTlGJTk4JTgxJUYwJTlGJTk4JUI1JUYwJTlGJTk4JTk0JUYwJTlGJTk4JUE3JUYwJTlGJUE3JTkwJUYwJTlGJUE0JUEwJUYwJTlGJTk4JTg3JUYwJTlGJTk4JTg1JUYwJTlGJUE3JTk2JUYwJTlGJTkyJUE1JUYwJTlGJTk4JTlCJUYwJTlGJUE1JTkyJUYwJTlGJUE1JUE1JUYwJTlGJUE3JTk3JUYwJTlGJTk4JUE3JUYwJTlGJUE3JTkwJUYwJTlGJUE0JUEwJTIyJTJDJTIyaW50ZXJwcmV0ZXJBcmd1bWVudHMlMjIlM0ElMjIlMjIlMkMlMjJtb2RlJTIyJTNBJTIyaW50ZXJwcmV0ZXIlMjIlN0Q=)
[Answer]
# [><>](https://esolangs.org/wiki/Fish), ~~158~~ 115 bytes
*Saved a lot of bytes thanks to [Jo King](https://codegolf.stackexchange.com/users/76162/jo-king)*
```
>4>1-&0'krahS '0l3-.
~ ^oa~<
ooo:?!/1-'ood 'o
\ao'!'^?$6:&~
\!?:o
^'ybaB'
^'yddaD'
^'ymmoM'
^'apdnarG'
^'amdnarG'
;
```
[Try it online!](https://tio.run/##S8sszvj/387EzlBXzUA9uygxI1hB3SDHWFePq04hLj@xzoYrPz/fyl5R31BXPT8/RUE9nysmMV9dUT3OXsXMSq2OK0bR3iqfK069MinRSR1Ep6QkuoAZubn5viBGYkFKXmKRO5iZC2Va//8PAA "><> – Try It Online") You may also want to paste the code in at [fishlanguage.com](https://fishlanguage.com/), where you can see an animation of it ~~swimming~~ running.
[Answer]
# [Haskell](https://www.haskell.org/), 97 bytes
```
unlines[x++s++p|x<-words"Baby Daddy Mommy Grandpa Grandma",p<-[a,a,a,"!"]]
s=" Shark"
a=s>>" doo"
```
[Try it online!](https://tio.run/##JcW9DoIwEADgnac4by28AWUwJk5OjMBwUhRCfy49iDTx2a0x5hu@mWSdrM1O93n3dvGTdIdSohS/j7p6hWgEz3RPcCFjEtyCcwmukbxh@u8IS66rjsofPOEwFKIR2pniigVpaRoEEwJmR4sHDbxv7RbB5c/4sPSUXI3MXw "Haskell – Try It Online")
This is an optimization of [the Haskell solution](https://codegolf.stackexchange.com/a/180033/20260) by [starsandspirals](https://codegolf.stackexchange.com/users/85486/starsandspirals). The new trick is to iterate over the rows of each stanza with an inner loop, and join the lines using `unlines`, saving the need to explicitly insert newlines.
The suffixes of the four lines are `[a,a,a,"!"]`, where `a` is `" doo"` replicated 6 times with `a=s>>" doo"`, where starsandspirals cleverly reuses the six-character-long `s=" Shark"`. Writing `[a,a,a,...]` looks a bit silly, but I'm not seeing a shorter way.
A list-monad version is the same length but it looks cool.
```
unlines$(++).(++s)<$>words"Baby Daddy Mommy Grandpa Grandma"<*>[a,a,a,"!"]
s=" Shark"
a=s>>" doo"
```
[Try it online!](https://tio.run/##JcWxDoIwEIDhnac4Lwwi6hPQDsbEyYlRHU6KQui1TQ9i@vJWjfmT7x9Ipt7azOqaF2dH10u5rutq/0WqptQvH43gge4JjmRMgrNnTnCK5Eyg/5mw2egLbX/hCm@FKIR2oDhhQUq0RjDeY2YaHSgIy9zOETi/u4elp@RdF8IH "Haskell – Try It Online")
[Answer]
# [C# (Visual C# Interactive Compiler)](http://www.mono-project.com/docs/about-mono/releases/5.0.0/#csc), ~~153~~ 131 bytes
```
foreach(var i in"Baby Daddy Mommy Grandpa Grandma".Split()){var a=i+" Shark doo doo doo doo doo doo\n";Write(a+a+a+i+" Shark!\n");}
```
Thanks to @Destrogio for saving 30 bytes!
[Try it online!](https://tio.run/##Sy7WTS7O/P8/Lb8oNTE5Q6MssUghUyEzT8kpMalSwSUxJaVSwTc/N7dSwb0oMS@lIBFC5yYq6QUX5GSWaGhqVoP0JNpmaispBGckFmUrpOTnY8MxeUrW4UWZJakaidogCNegCJTRtK79/x8A "C# (Visual C# Interactive Compiler) – Try It Online")
[Answer]
# [whenyouaccidentallylose100endorsementsinnationstates](https://github.com/MilkyWay90/whenyouaccidentallylose100endorsementsinnationstates) - ~~123,065~~ ~~121,716~~ ~~113,695~~ ~~100,889~~ 98,554 bytes
[The program](https://pastebin.com/CSyW5wSz)
~~I'll golf this later.~~ Done.
~~I'll golf this more (later)~~ Done.
~~I'll golf this even more later.~~ DONE.
~~I'll get the byte count to 5 digits later.~~ YAY.
I'll get the byte count to 4 digits (I don't know if this is possible, but I do know it is impossible to get 3 digits with my current approach).
[Answer]
# [R](https://www.r-project.org/), ~~131~~ ~~122~~ 120 bytes
-9 bytes thanks to Giuseppe
-2 more bytes, also Giuseppe
```
`?`=c
s="Shark"
for(x in "Baby"?"Daddy"?"Mommy"?"Grandpa"?"Grandma")cat(rep("
"?x?s?rep("doo",6),3)?"
"?x?paste0(s,"!"))
```
[Try it online!](https://tio.run/##K/r/P8E@wTaZq9hWKTgjsShbiSstv0ijQiEzT0HJKTGpUsleySUxJQVE@@bn5oJo96LEvJSCRBgrN1FJMzmxRKMotUBDiUvJvsK@2B7MTsnPV9Ix09Qx1rSHiBckFpekGmgU6ygpKmlq/v8PAA "R – Try It Online")
Quite proud of this actually, especially with R being rather poor at handling strings. I started out using `cat(sapply(...))`, but realized a for loop shaves off a few bytes. 
Abusing the `"?"=c` significantly reduced the amount of parentheses needed.
I also tried to do `"*"=rep` to repeat the individual lines of the stanzas and the "doos", but that did not shave off any bytes.
# 111 bytes
Giuseppe and ASCII-only's alternative, (and better) solution that fixes some spacing issues.
```
write(paste0(rep(c("Baby","Daddy","Mommy","Grandpa","Grandma"),,,4)," Shark",c(rep(strrep(" doo",6),3),"!")),1)
```
[Try it online!](https://tio.run/##K/r/v7wosyRVoyCxuCTVQKMotUAjWUPJKTGpUklHySUxJQVE@@bn5oJo96LEvJSCRBgrN1FJU0dHx0RTR0khOCOxKFtJJxlsQnFJEYhSUkjJz1fSMdPUMQYqUVTS1NQx1Pz/HwA "R – Try It Online")
[Answer]
# PHP, 104 bytes
```
foreach([Baby,Daddy,Mommy,Grandpa,Grandma]as$s)echo$t=$s.str_pad($u=" Shark",30," doo"),"
$t
$t
$s$u!
";
```
Run with `php -nr '<code>'` or [try it online](http://sandbox.onlinephpfunctions.com/code/83c8946a85d4bd60c23e1666dc05cb703d2bd98d).
[Answer]
# [R](https://www.r-project.org/), ~~126~~ 125 bytes
```
cat(paste(rep(c("Baby","Daddy","Mommy","Grandpa","Grandma"),,,4),c(rep("Shark doo doo doo doo doo doo",3),"Shark!")),sep="
")
```
This doesn't feel as 'clever' as either [CT Hall](https://codegolf.stackexchange.com/a/180114) or [Sumner18](https://codegolf.stackexchange.com/a/180096)'s answers, but by avoiding the overhead of defining variables it comes out smaller.
[Try it online!](https://tio.run/##K/r/PzmxRKMgsbgkVaMotUAjWUPJKTGpUklHySUxJQVE@@bn5oJo96LEvJSCRBgrN1FJU0dHx0RTJxmsUSk4I7EoWyElPx8bVtIx1tSBKFFU0tTUKU4tsFXiUtL8/x8A "R – Try It Online")
Edit: Saved 1 byte by using carriage return as per comment by Jonathan Frech
[Answer]
# [R](https://r-project.org), 139 138 137 bytes
```
s='Shark';d='doo';cat(paste(rep(c('Baby','Daddy','Mommy','Grandpa','Grandma'),e=4),c(rep(paste(s,d,d,d,d,d,d),3),paste0(s,'!'))),sep='
')
```
There's probably a better way to do the 'doo's but I wasn't able to get it.
**Edit:**   
Replaced '\n' with actual new line at JDL's suggestion;  
Removed trailing newline at Giuseppe's suggestion.
[Try it online](https://tio.run/##RYy9CsMwEIP3vEUn@eCGQLsFLyGQqVOe4OozBIJrY2fp07v5IQQNn5CQcq3FYpolL@jUQmNE52Q1ScrqTfbJOINePj8wBlHd@Y4h7ByzfDXJ5YKA2NsXsTuG50VhvUX8JD7ydivwABFx8cmiAdX6Bw)
[Answer]
# Plain TeX, 147 Bytes
`\input pgffor\def\D{doo~}\def\d{\D\D\D\D\D\D}\def\S{Shark}\def\y{\x~\S~\d\par}\foreach\x in{Baby,Mommy,Daddy,Grandma,Grandpa}{\y\y\y\x~\S!\par}\bye`
Rather disappointing, but I haven't posted a TeX answer in ages. Loops are very verbose in teX (and looping over strings isn't even built-in so even this is a bit of a stretch)
[Answer]
# [C (gcc)](https://gcc.gnu.org/), ~~123~~ 122 bytes
-1 byte thanks to ceilingcat
```
#define A" doo doo"
f(i){for(i=20;i--;)printf("%.7s Shark%s\n","GrandmaGrandpaMommy\0 Daddy\0 Baby"+i/4*7,i%4?A A A:"!");}
```
[Try it online!](https://tio.run/##HYyxCsIwFABn8xXxSSHRVosUCgaRiuDk5Nrl2TT6kCQldSml3x6rHMdt12TPpolxpVtDruUVcO39T2BGkByND4KO@1xRlinZBXIfIyDZlj2/vzC8k752kMI1oNMW/@nw5q0d6pxfUOtfz/gYYEO7Yl2mlBSnis8cYAlSTXE@covkhGQjWxghFZviFw "C (gcc) – Try It Online")
[Answer]
# [Jelly](https://github.com/DennisMitchell/jelly), 42 [bytes](https://github.com/DennisMitchell/jelly/wiki/Code-page)
```
“¡N³»ẋ6Wẋ3;”!ṭ€;Y
“¡ʂɓṙṢ®ÑR+£ṭỤṙ»Ḳç€“¤⁾ċ»Y
```
**[Try it online!](https://tio.run/##y0rNyan8//9Rw5xDC/0ObT60@@GubrNwIGFs/ahhruLDnWsfNa2xjuQCKzjVdHLyw50zH@5cdGjd4YlB2ocWA@Uf7l4CFANq3LHp8HKgYpDKJY8a9x3pPrQ78v9/AA "Jelly – Try It Online")**
### How?
```
“¡N³»ẋ6Wẋ3;”!ṭ€;Y - Link 1: make a verse: familyMember; space+animalName
                  -                        e.g. "Baby"; " Shark"
“¡N³»             - dictionary word " doo"
     ẋ6           - repeat 6 times -> " doo doo doo doo doo doo"
       W          - wrap in a list -> [" doo d..."]
        ẋ3        - repeat 3 times -> [" doo d..."," doo d..."," doo d..."]
           ”!     - literal '!' character
          ;       - concatenate    -> [" doo d..."," doo d..."," doo d...","!"]
               ;  - concatenate inputs ["Baby Shark"]
             ṭ€   - tack for €ach  -> [["Baby Shark"," doo d..."],...,["Baby Shark","!"]]
                Y - join with newline characters
 
“¡ʂɓṙṢ®ÑR+£ṭỤṙ»Ḳç€“¤⁾ċ»Y - Main Link: no arguments
“¡ʂɓṙṢ®ÑR+£ṭỤṙ»          - dictionary words "Baby"+" Daddy"+" Mommy"+" Grandpa"+" Grandma"
               Ḳ         - split at spaces -> ["Baby","Daddy","Mommy","Grandpa","Grandma"]
                  “¤⁾ċ»  - dictionary word " Shark"
                ç€       - call last Link (1) as a dyad for €ach
                       Y - join with newline characters
                         - implicit print
```
[Answer]
# [05AB1E](https://github.com/Adriandmen/05AB1E), ~~39~~ 38 bytes
```
”‡ÍÊÐ¢×myîºpaîºma”#„o€·À6×3и'!ª”ã¢”ìâ»
```
[Try it online!](https://tio.run/##yy9OTMpM/f//UcPcRw0LD/ce7jo84dCiw9NzKw@vO7SrIBFE5iYCZZUfNczLf9S05tD2ww1mh6cbX9ihrnhoFVDi8OJDi0DUmsOLDu3@/x8A "05AB1E – Try It Online")
```
”‡ÍÊÐ¢×myîºpaîºma”                # compressed string "Baby Daddy Mommy Grandpa Grandma"
                  #               # split on spaces
„o€·                              # dictionary string "o do"
    À                             # rotated left: " doo"
     6×                           # string-repeat 6 times: " doo doo doo doo doo doo"
       3и                         # list-repeat 3 times
         '!ª                      # append "!" to that list
            ”ã¢”ì                 # prepend "Shark" to each element of that list
â                                 # cartesian product
 »                                # join by newlines
                                  # implicit output
```
[Answer]
# [APL (Dyalog Unicode)](https://www.dyalog.com/), 72 bytes (SBCS)
```
↑,(,∘' Shark'¨'BabyDaddyMommyGrandpaGrandma'(∊⊂⊣)⎕A)∘.,'!',⍨3⍴⊂24⍴' doo'
```
[Try it online!](https://tio.run/##SyzI0U2pTMzJT////1HbRB0NnUcdM9QVgjMSi7LVD61Qd0pMqnRJTEmp9M3Pza10L0rMSylIBFO5ieoajzq6HnU1PeparPmob6qjJlCrno66orrOo94Vxo96twDljEyAtLpCSn6@@n@gmkdtEx719j3qan7UuwYocWi9MdBSoHhwkDOQDPHwDP4PAA "APL (Dyalog Unicode) – Try It Online")
Explanation:
```
↑,(,∘' ..'¨'...'(∊⊂⊣)⎕A)∘.,'!',⍨3⍴⊂24⍴' doo'
                                   24⍴' doo'⍝ repeat 'doo' 6 times
                                  ⊂         ⍝ box the 'doo's
                                3⍴          ⍝ make three copies
                           '!',⍨            ⍝ append a `!` at the end
           '...'(∊⊂⊣)⎕A                     ⍝ split the long string on capitals
   ,∘' ..'¨                                 ⍝ append to all family members
                        ∘.,                 ⍝ construct a table where each row is
                                            ⍝ a full verse of the song
↑,                                          ⍝ flatten the resulting verse table
```
-28 thanks to @Adám
-2 bytes (-14 before; but I did a few golfs before checking the golfed version) thanks to @Razetime
]