【发布时间】:2019-04-08 19:12:37
【问题描述】:
是的,这有点搞砸了,但我必须执行以下操作(这只是一个简化的示例):
sudo -H -u user1 bash -c ‘ssh -I /home/user1/.ssh/id_rsa -f user2@machine1.domain1.com “find ./ -name ‘*.txt’”’
我需要在单引号内的双引号内加上单引号。似乎标准的'"'"' 不起作用,因为双打会关闭双打而不是引用单打。会不会是:"'"'""' 里面我需要的每一个单曲?
我尝试在 ssh 命令周围跳过',但当然失败了。
【问题讨论】:
-
首先将'(开引号)和'(闭引号)字符更改为'(单引号)。对“和”执行相同的操作到“(双引号)。看起来您使用 MS-Word 之类的文本编辑器编辑 bash 脚本,其行为是将引号对更改为开始和结束引号。跨度>
-
其次,用 \(反斜杠)转义引号内的引号,就像下面 chepner 所说的那样。
-
标准
'"'"'在这里可以工作——当第一级引号被解析时,双引号(在单引号内)不被认为是重要的,它们只是另一个字符恰好在带引号的字符串中。您可以使用printf '%s\n' 'ssh ... "find ./ -name '"'"'*.txt'"'"'"'对此进行测试(即查看在一级解析和引号删除后命令的外观)
标签: bash