Bash
如何通過 ssh 在 bash cmd 中執行 python cmd
當我在我的 bash 終端中執行以下命令時,它工作正常。
$ bash -c "python -c \"print 'helloworld'\""
—>你好世界但是,當我嘗試通過 ssh 執行此操作時,它什麼也沒給我,有人可以幫助闡明這個問題嗎?
$ ssh meeee@10.145.70.90 "bash -c \"python -c \"print 'helloworld'\"\""
–> 沒有
你引用的不對。你的命令
ssh meeee@10.145.70.90 "bash -c \"python -c \"print 'helloworld'\"\""
在遠端端執行它:
bash -c "python -c "print 'helloworld'""
這相當於
bash -c "python -c print" 'helloworld'
執行
python -c print
,它列印一個空行。(注意:helloworld
像這樣操作。)要正確引用,您需要更多的反斜杠。這:
ssh meeee@10.145.70.90 "bash -c \"python -c \\\"print 'helloworld'\\\"\""
在遠端端執行以下命令:
bash -c "python -c \"print 'helloworld'\""
這正是你想要的。
在 Super User 上檢查這個問題。它旨在在類似情況下提供幫助。
你很可能根本不需要
bash -c
。此程式碼應在本地 shell 中工作:python -c "print 'helloworld'"
所以這可能會起作用:
ssh meeee@10.145.70.90 "python -c \"print 'helloworld'\""
可能是因為 SSH 伺服器將使用 meeee 選擇的 shell 作為其登錄 shell 來執行命令。在某些特殊情況下,它可能無法
python -c
正常執行。但既然你期望它執行bash -c
,它也應該執行python -c
ssh meeee@10.145.70.90 "$(cat <<'EOT' bash -c "python -c \"print 'helloworld'\"" EOT )"
我有一個簡單的功能/實用程序的想法,它應該有助於避免像這樣的多個嵌入式命令的引用噩夢,敬請期待;-)