コマンドパラメータから「\」をエスケープする方法

コマンドパラメータから「\」をエスケープする方法

コマンドがあります。

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

スクリプトを実行すると、Linuxはtestpassと101の間にスペースを入れます。スクリプトで「testpass \ 101」をユーザー名として処理したいと思います。

私の言葉を理解してほしい

答え1

これは\エスケープ文字のために発生します。

参照を使用するか

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

またはエスケープされたバックスラッシュを使用してください。

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

答え2

完全性のために、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'(8進数と同じ)

詳細については、次を参照してください。通常の文字のように特殊文字を使用する方法は?

関連情報