Используя #!/bin/sh
shebang, вы, скорее всего, запрашиваете bash
(или какая-либо оболочка позади /bin/sh
, которая в настоящее время почти всегда является ссылкой на другую оболочку), чтобы выполнить ваш сценарий в режиме, совместимом с POSIX. :
Если bash вызывается с именем sh, он пытается максимально близко имитировать поведение при запуске исторических версий sh, при этом также соответствует стандарту POSIX.
Ваша проблема в том, что POSIX echo
не определяет флаг -n
, поэтому он понимается в вашей команде как еще один параметр для отображения в ваших выходных данных. Действительно, LW4gdXNlcjpwYXNzd29yZAo=
- это кодировка base64 -n user:password
.
. Вы должны использовать printf
вместо echo
, поведение которого гораздо лучше определено и отличается в разных реализациях меньше.
Более того, если вам не требуется, чтобы ваш сценарий был переносимым и, возможно, выполнялся на платформах, где bash
недоступен, я предлагаю вам использовать #!/usr/bin/env bash
shebang вместо #!/bin/sh
, чтобы вы могли насладиться вкусностями bash
.