簡體   English   中英

Bash Script單引號內的雙引號

[英]Bash Script single quotes inside of double quotes inside of single quotes

是的,這有點混亂,但是我必須執行以下操作(這只是一個簡化的示例):

sudo -H -u user1 bash -c 'ssh -I /home/user1/.ssh/id_rsa -f user2@machine1.domain1.com “find ./ -name '*.txt'”'

我需要在單引號內的雙引號內包含單引號。 似乎標准的'"'"'不起作用,因為雙打會關閉雙打而不是引用單引號。 可能是:我在那里需要的每個單身都用"'"'""'

我試過只是在ssh命令周圍跳過' ,但是當然失敗了。

您不需要bash -c層; 只是直接從sudo運行ssh本身。

sudo -H -u user1 ssh -I /home/user1/.ssh/id_rsa -f user2@machine1.domain1.com "find ./ -name \"*.txt\""

-I選項應該是不必要的;如果sshuser1身份運行,則默認密鑰為~user1/.ssh/id_rsa 。無論如何,您可能已經說過-i-I指定要使用的PKCS#11庫,而不是私鑰。)

就是說,您不能在單引號中包含單引號。 如有疑問,請使用雙引號,並正確轉義任何嵌套的雙引號。

chepner的答案就足夠了。 如果需要bash -c ,則可以使用看起來混亂的此解決方案:

sudo -H -u user1 bash -c 'ssh -I /home/user1/.ssh/id_rsa -f user2@machine1.domain1.com "find ./ -name '"'"'*.txt'"'"'"'

說明

'... "find ./ -name '[first ' ended here]  "'" [second ' quote start]  '*.txt'[pattern]  "'"[second ' end] '"'[ " ended here]

我換成''

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM