0
A
回答
4
因爲在致電sudo
之前bash將替換${FOO}
。那麼,什麼sh -c
實際上看到的是:
FOO=bar echo Result:
此外,即使你試圖
FOO=bar echo Result:${FOO}
它仍然無法工作。要獲得這種權利,你可以這樣做:
FOO=bar; echo Result:${FOO}
現在是固定的,讓我們回到sh -c
。爲了防止從bash的解釋,這樣賦予sh -c
字符串,只需把它放在'
,而不是"
:
sudo sh -c 'FOO=bar; echo Result:${FOO}'
參閱理性的評論。
1
這不起作用,因爲變量FOO
設置爲以下命令,echo
,但${FOO}
被封閉外殼替換。
如果你想要的工作,你必須設置變量FOO
用於封閉外殼和單引號
sudo FOO=bar sh -c 'echo Result:${FOO}'
相關問題
- 1. 爲什麼我的會話變量沒有在這裏設置?
- 2. Java - 爲什麼我的靜態變量被設置爲空?
- 3. 爲什麼我的私有變量設置爲空?
- 4. 爲什麼這個變量沒有在setTimeout函數中設置?
- 5. 爲什麼當我嘗試在prepareForSegue中設置這個變量的值時,我的應用崩潰了?
- 6. 爲什麼這個變量被改變了?
- 7. 爲什麼我的變量爲空?
- 8. 當我在defun中設置一個參數變量時發生了什麼? (Emacs)
- 9. 爲什麼這個變量是在
- 10. 什麼是GIT_WORK_TREE,爲什麼我從來不需要設置這個ENV變量,爲什麼現在呢?
- 11. 爲什麼是我的變量設置自己「時,試圖設置另一個變量包含字符串
- 12. 我在這裏用這些變量做錯了什麼?
- 13. 爲什麼這個批處理變量即使設置也不會改變?
- 14. Bash變量值未設置
- 15. 爲什麼沒有設置變量
- 16. 當變量不再需要時,將變量設置爲空
- 17. 爲什麼我的元素變量在這個foreach循環中總是爲空?
- 18. 什麼是設置我的環境變量錯了?
- 19. 什麼時候我必須在VB6中設置一個變量爲「Nothing」?
- 20. 爲什麼這個變量還活着?
- 21. 爲什麼這個php變量undefined
- 22. 這是爲什麼給我「是約束剛性類型變量」錯誤
- 23. SASS(.sass)爲什麼這個變量混淆了一切?
- 24. 爲什麼這個PHP在執行時讓我的網站變爲空白?
- 25. 爲什麼私有靜態變量在某個時刻變爲空,我能做些什麼來解決?
- 26. 爲什麼我得到這個錯誤:對象變量或塊變量未設置?
- 27. 爲什麼在返回語句後這個變量會改變?
- 28. 爲什麼我的實例變量零,即使我設置它?
- 29. 如何設置其值可能爲空的Bash變量?
- 30. 爲什麼我不能在javascript中訪問這個變量?
是啊,我真的很好奇,爲什麼你需要的分號,它的工作包裹
echo ...
!這似乎很奇怪。 – 2013-03-08 17:46:03我知道對不對?我之前使用過'PATH = $ PATH sudo ...',因爲'sudo'出於安全原因重置了'PATH',這沒什麼問題。我不知道爲什麼在這個例子中它不起作用。 – Shahbaz 2013-03-08 17:47:16
'FOO = bar echo ...'在'echo'運行的環境中設置'FOO'的值;但'echo'在實際運行之前需要擴展'$ {FOO}'。 – chepner 2013-03-08 18:53:31