exit
— это встроенный -bash, поэтому вы не можете exec
его использовать. Согласно руководству bash:
Bash's exit status is the exit status of the last command executed in the script. If no commands are executed, the exit status is 0.
Собрав все это воедино, я бы сказал, что ваш единственный вариант — сохранить желаемый статус выхода в переменной, а затем exit $MY_EXIT_STATUS
при необходимости.
Это происходит потому, что \
является escape-символом.
Либо используйте цитирование
path/to/forticlientsslvpn_cli --server <host>:<port> --vpnuser 'testpass\101'
или используйте экранированную обратную косую черту:
path/to/forticlientsslvpn_cli --server <host>:<port> --vpnuser testpass\\101
Для полноты картины, с оболочкой bash
и в системах на основе ASCII, только с цитированием:
'testpass\101'
(однозначно лучший)testpass\\101
"testpass\101"
или"testpass\\101"
(последнее лучше)$'testpass\\101'
$'testpass\u005c101'
или$'testpass\U0000005c101'
(U+005C — кодовая точка Unicode для обратной косой черты)$'testpass\x5c101'
(где 0x5C — значение байта кодировки ASCII\
)$'testpass\134101'
(то же в восьмеричном формате)Подробнее см. Как использовать специальный символ как обычный?