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

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

我有一个命令

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

为了完整起见,对于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'(八进制相同)

有关更多详细信息,请参阅如何像普通字符一样使用特殊字符?

相关内容