Как избежать "\" в параметрах команды

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при необходимости.

1
05.05.2020, 15:20
2 ответа

Это происходит потому, что \является escape-символом.

Либо используйте цитирование

path/to/forticlientsslvpn_cli --server <host>:<port> --vpnuser 'testpass\101'

или используйте экранированную обратную косую черту:

path/to/forticlientsslvpn_cli --server <host>:<port> --vpnuser testpass\\101
10
28.04.2021, 23:16

Для полноты картины, с оболочкой 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'(то же в восьмеричном формате)

Подробнее см. Как использовать специальный символ как обычный?

7
28.04.2021, 23:16

Теги

Похожие вопросы