有人可以舉例說明declare -x會有用嗎?如何在bash中使用declare -x
8
A
回答
11
declare -x FOO
與export FOO
相同。它將FOO
變量「導出」爲環境變量,以便您從該shell會話運行的程序可以看到它。
5
聲明-x可以用來代替eval來允許將變量設置爲shell的參數。與安全
# THIS IS NOT SAFE while test $# -gt 0; do eval export $1 shift done
:例如,你可以更換極不安全
while test $# -gt 0; do declare -x $1 shift done
順便說一句,這種結構允許用戶調用的腳本:
$ ./test-script foo=bar
而不是更習慣(但有些令人困惑):
$ foo=bar ./test-script
+0
謝謝。但第一個選項如何不安全? – abc 2011-04-26 21:27:16
+4
無論何時您評估一個字符串,您都可以給可以構建字符串的用戶提供腳本執行任何操作的能力。 – 2011-04-27 03:20:27
相關問題
- 1. 「declare + x」是什麼意思vs「declare -x」?
- 2. bash的-declare文檔
- 3. 爲什麼在bash腳本中需要「declare -f」和「declare -a」?
- 4. 使用「declare -a」在bash中聲明數組有什麼優勢?
- 5. 在MySQL中使用Declare
- 6. 在MYSQL使用@DECLARE 5.1
- 7. 如何模仿C++'X = X && F()`在bash
- 8. 如何在Mac OS X中使用Bash輸入0xA(\ n)10.7.4
- 9. 如何使用bash/awk在列表中找到X最低值?
- 10. SMT2中的declare-fun vs declare-const
- 11. 是否可以在CTE中使用Declare?
- 12. 什麼時候在C++中使用「declare」?
- 13. 如何在jdbc的語句中使用DECLARE子句?
- 14. 如何使用bash中的`declare`在命令的輸出中設置其名稱和值取自哪個變量?
- 15. if [[x]!= x]在bash中做什麼?
- 16. 如何在bash中使* ='*'?
- 17. 如何在OS X上的Ruby腳本中使用shell中的Bash別名?
- 18. 如何在bash腳本中使用pbrun?
- 19. 如何在bash中使用函數?
- 20. 如何在bash腳本中使用yad?
- 21. Unix如何在bash中使用'command()'
- 22. MySQL如何在bash中使用變量?
- 23. 如何在bash中使用kill SIGUSR2?
- 24. 如何在Bash中使用讀命令?
- 25. 如何在bash中使用變量grep
- 26. 如何在bash中使用printf「%q」?
- 27. 如何在mySQL中使用bash別名
- 28. 如何在bash shell中使用導出?
- 29. 如何在bash中使用echo查找?
- 30. 如何在bash腳本中使用getopts?
我不認爲他們是確切的同義詞。 – 2012-07-06 18:46:48
不是嗎?那麼爲什麼當你運行'export'(沒有任何參數)時,它會使用'declare -x'輸出當前的輸出? – 2012-07-07 04:48:20
我不確定,但請參閱[此問題](http://stackoverflow.com/q/7506644/834176)。我試了一下,他們的行爲有所不同。 – 2012-07-09 13:08:05