title: $ in credentials binding + sh escaping madness for declarative pipelines
body: <p>This is my password: "ASD123$567"</p>
  
  <p>This doesn't work</p>
  
  <pre><code>withCredentials([usernamePassword(credentialsId: 'creds',
      usernameVariable: 'myuser', passwordVariable: 'mypass')]) {
      sh "some command --username ${myuser} --password ${mypass}"
  }
  </code></pre>
  
  <p>What i see in the output is mypass is not obfuscated and most importantly it looks like its getting cut off after the "$" so its only showing ASD123</p>
  
  <p>Edit: I was a little confused about where this was breaking down, looks like it was actually translating to the Shell step specifically was causing the issue.</p>