Shaw was born in St. Thomas, Ontario. He played his junior hockey with the Kitchener Rangers of the OHL from 1981-1984. In his rookie season with the Rangers in 1981-82, Shaw earned 31 points in 68 games. He added four points in 15 playoff games as Kitchener advanced to the 1982 Memorial Cup. In five games in the tournament, Shaw had two assists as Kitchener won the Memorial Cup. He would be drafted by the Quebec Nordiques as the 13th overall pick in the 1982 NHL Entry Draft. Shaw returned to Kitchener for the 1982-83 season, and had 18 goals and 74 points in 57 games with the Rangers, while adding 12 points in 12 playoff games as Kitchener lost to the Sault Ste. Marie Greyhounds in the third round of the playoffs. In 1983-84, Shaw scored 14 goals and 48 points in 58 games, adding 13 points in 16 playoff games as Kitchener advanced to the 1984 Memorial Cup. Shaw earned ten points in four games, as Kitchener lost to the Ottawa 67's in the final game.
Professional career
Quebec Nordiques
Shaw made his professional debut in the 1982-83 season, appearing in two games with the Quebec Nordiques, earning no points. Shaw returned for three more games with the Nordiques in 1983-84, however, he once again had no points with the club. In 1984-85, Quebec assigned Shaw to the Fredericton Express of the AHL, where he had 13 points in 48 games, earning a promotion to the Nordiques. Shaw played in 14 games with Quebec, earning no points, and returned to Fredericton, where he had no points in two playoff games. In 1985-86, Shaw played his first full season with Quebec, as he had 26 points in 73 games with the Nordiques, with a +14 rating, as Quebec finished in first place in the Adams Division. Shaw missed the playoffs due to an injury, as the Nordiques were swept in the first round by the Hartford Whalers. In the 1986-87 season, Shaw had 19 points, all assists, in 75 games, as well as a -35 rating. He would again not see any playoff action. On September 30, 1987, the Nordiques traded Shaw and John Ogrodnick to the New York Rangers for Jeff Jackson and Terry Carkner.
In 1987-88, Shaw had a career-high 32 points in 68 games with the Rangers; however, New York failed to qualify for the playoffs. In 1988-89, Shaw recorded 17 points in 63 games, with a +14 rating, helping the Rangers make the playoffs. In four playoff games, Shaw earned two assists. Shaw was suspended for 12 games after slashing Mario Lemieux of the Pittsburgh Penguins in the throat during a game on November 3, 1988. Shaw missed the majority of the 1989-90 season due to a shoulder injury in a game against his former team, the Quebec Nordiques, on November 2, 1989. In 22 games that season, Shaw earned 12 points, and saw no post-season action. In 1990-91, Shaw played in a career high 77 games, scoring 12 points. In six playoff games, Shaw had no points. Shaw began the 1991-92 season with the Rangers, earning an assist in ten games, before being traded to the Edmonton Oilers on November 12, 1991, for Jeff Beukeboom in a trade that completed an October 4, 1991 trade that saw the Rangers send Bernie Nicholls, Steven Rice and Louie DeBrusk to the Oilers for Mark Messier.
Edmonton Oilers
Shaw would appear in 12 games with the Edmonton Oilers, scoring a goal and an assist, as well as a -8 rating, before being traded to the Minnesota North Stars for Brian Glynn on January 21, 1992.
Shaw would finish the 1991-92 season with the Minnesota North Stars, earning seven assists in 37 games, helping the team qualify for the playoffs. Shaw had a good playoff with the team, scoring two goals and four points in seven games as the North Stars lost to the Detroit Red Wings in the first round. The North Stars would trade Shaw to the Boston Bruins on September 2, 1992 for future considerations.
In 1992-93 with the Boston Bruins, Shaw tied his career high with 77 games, with a career-high 10 goals, helping the Bruins to first place in the Adams Division. His 24 points was his highest total since earning 32 points in the 1987-88 season. Shaw earned an assist in four playoff games, as Boston was upset by the Buffalo Sabres in the first round of the playoffs. Shaw scored one goal and nine assists in 55 games with Boston during 1993-94. In the playoffs, Shaw scored a goal and two assists in 13 games. In the lockout-shortened 1994-95 season, Shaw played in 44 games, earning seven points, as the Bruins qualified for the playoffs once again. In five playoff games, Shaw had an assist. On August 17, 1995, the Bruins traded Shaw to the Tampa Bay Lightning for a third-round draft pick in the 1996 NHL Entry Draft.
Tampa Bay Lightning
In the 1995-96 season, Shaw appeared in 66 games, earning 12 points, as he helped the Tampa Bay Lightning clinch their first-ever playoff berth. In six playoff games, Shaw had one assist as the Lightning lost to the Philadelphia Flyers. Shaw appeared in 57 games with Tampa Bay in 1996-97, registering 11 points, as the club failed to make the playoffs. In 1997-98, he played 14 games with the Lightning, with two points. He spent some time in the IHL, playing in 26 games with the Las Vegas Thunder, as he had 19 points. On March 24, 1998, he was traded with Bryan Marchment and the Lightning's first-round draft pick in the 1998 NHL Entry Draft to the San Jose Sharks for Andrei Nazarov, and the Florida Panthers' first-round draft pick in the 1998 NHL Entry Draft, which also was the first overall draft pick. The Lightning would use that pick to draft Vincent Lecavalier.
Shaw made a comeback during the 2000-01 season, playing with the Chicago Wolves of the IHL. He had 10 assists in 30 games with the Wolves, however, Shaw had no points in eight playoff games.