[英]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
選項應該是不必要的;如果ssh
以user1
身份運行,則默認密鑰為~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.