我有一个命令
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
shell 和基于 ASCII 的系统,仅使用引用:
'testpass\101'
(迄今为止最好的)testpass\\101
"testpass\101"
或"testpass\\101"
(后者更好)$'testpass\\101'
$'testpass\u005c101'
或$'testpass\U0000005c101'
(U+005C 是反斜杠的 Unicode 代码点)$'testpass\x5c101'
(其中0x5C是ASCII编码的字节值\
)$'testpass\134101'
(八进制相同)
有关更多详细信息,请参阅如何像普通字符一样使用特殊字符?