Это происходит потому, что cmd.exe
добавляет дополнительную пару кавычек вокруг аргументов с не -символами ASCII. Итак, что на самом деле приходит к приложению cygwin, так это следующее:
C:\cygwin\bin\bash --login -c "echo blo"
arg0: /usr/bin/bash
arg1: --login
arg2: -c
arg3: echo blo
Итак, bash может интерпретировать 'echo blo
', но:
C:\cygwin\bin\bash --login -c "echo blöd"
arg0: /usr/bin/bash
arg1: --login
arg2: -c
arg3: "echo blöd"
Теперь bash не распознает '"echo blöd"
'.
Разобрались.
Скорректированный файл Test.sh:
#!/bin/sh
PROGRAM_START="/orabin01/tomcat/bin/startup.sh"
DAEMON_USER="tomcat"
/bin/su $DAEMON_USER -c "$PROGRAM_START"