如何在命令参数中转义“\”

Tlo*_*ala 1 command-line bash quoting

我有一个命令

path/to/forticlientsslvpn_cli --server <host>:<port> --vpnuser testpass\101
Run Code Online (Sandbox Code Playgroud)

当我运行脚本时,linux 在 testpass 和 101 之间放置了一个空格。我希望脚本看到“testpass\101”作为用户名

我希望我说得通

Pan*_*nki 10

发生这种情况是因为\是转义字符。

要么使用引用

path/to/forticlientsslvpn_cli --server <host>:<port> --vpnuser 'testpass\101'
Run Code Online (Sandbox Code Playgroud)

或使用转义反斜杠:

path/to/forticlientsslvpn_cli --server <host>:<port> --vpnuser testpass\\101
Run Code Online (Sandbox Code Playgroud)


Sté*_*las 7

为了完整性,使用bashshell 和基于 ASCII 的系统,单独引用:

  • 'testpass\101' (迄今为止最好的)
  • testpass\\101
  • "testpass\101""testpass\\101"(后者更好)
  • $'testpass\\101'
  • $'testpass\u005c101'$'testpass\U0000005c101'(U+005C 是反斜杠的 Unicode 代码点)
  • $'testpass\x5c101'(其中 0x5C 是 ASCII 编码的字节值\
  • $'testpass\134101' (八进制相同)

更多详细信息,请参见如何将特殊字符用作普通字符?