У меня есть сценарий оболочки, который я хочу запустить на разных серверах Linux. Когда я запускаю команду echo с параметром -e и escape-символами в строке, она не выполняется должным образом в оболочке sh в Ubuntu 12.04 или Ubuntu 11.04. Два используемых нами сервера, на которых я хотел бы, чтобы скрипт работал, работают под управлением CentOS 5.3 и Ubuntu 12.04. Когда я запускаю следующую команду в bash на двух серверах, создается ожидаемый результат:
$ echo -e "line1\nline2"
line1
line2
Когда я запускаю ту же команду в sh на машине с CentOS, также создается правильный вывод. Но когда я запускаю команду в sh на Ubuntu 12.04 или 11.04, получается следующий вывод:
$ echo -e "line1\nline2"
-e line1
line2
Интересно, если я запущу ниже в sh на Ubuntu, он автоматически интерпретирует escape-символы.
$ echo "line1\nline2"
line1
line2
Сценарий должен работать в оболочке sh и должен быть переносимым на разные машины. Любые решения. Я также был бы очень признателен за ссылку на некоторые документы, объясняющие, почему и как это происходит.