bash
расширения параметра должно хватить
var='1.2.3-SNAPSHOT'
echo "${var%%-*}"
1.2.3
var='1.2.3'
echo "${var%%-*}"
1.2.3
Проблема в ваших цитатах:
$ word='phrase'
$ echo "pass$word"
passphrase
$ echo "'pass$word'"
'passphrase'
$ echo "'pass\$word'"
'pass$word'
Сильные кавычки не «защищают» переменные внутри слабых кавычек, поскольку они теряют свои магические свойства.
Одно простое решение — избежать знака доллара, который может привести к вашему падению.:
$ ssh user@remote.ip "mysqldump -u dbuser -p'pass\$word' dbname > backup.sql"
Другой вариант — поместить пароль в переменную:
$ password='pass$word' ssh user@remote.ip "mysqldump -u dbuser -p '$password' dbname > backup.sql"
В-третьих, если вы хотите перенести резервную копию на свой локальный хост, используйте SSH-туннель.:
$ ssh -L 3306:localhost:3306 sleep 60 &
$ mysqldump -u dbuser -p 'pass$word' -h localhost -P 3306 dbname > backup.sql
Кроме того, ваш вопрос говорит о перенаправлении вывода на ваш локальный компьютер, но ваши команды не делают этого:
$ ssh user@host "echo hello > output" # creates output on remote host
$ ssh user@host "echo hello" > output # creates output on local host