有人可以舉例說明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. 使用「declare -a」在bash中聲明數組有什麼優勢?
- 3. 在MySQL中使用Declare
- 4. 在MYSQL使用@DECLARE 5.1
- 5. 如何模仿C++'X = X && F()`在bash
- 6. 如何使用bash/awk在列表中找到X最低值?
- 7. 什麼時候在C++中使用「declare」?
- 8. 如何使用bash中的`declare`在命令的輸出中設置其名稱和值取自哪個變量?
- 9. 如何在bash中使* ='*'?
- 10. 如何在OS X上的Ruby腳本中使用shell中的Bash別名?
- 11. 如何在bash中使用printf「%q」?
- 12. Unix如何在bash中使用'command()'
- 13. 如何在bash腳本中使用getopts?
- 14. 如何在bash腳本中使用yad?
- 15. 如何在Bash中使用讀命令?
- 16. 如何在bash中使用函數?
- 17. 如何在bash腳本中使用pbrun?
- 18. 如何在mySQL中使用bash別名
- 19. 如何使用bash
- 20. 如何使用bash
- 21. 如何使用bash
- 22. 如何使用bash
- 23. 如何聲明一個類在MooseX :: Declare中使用多個角色?
- 24. FireDAC先用DECLARE CURSOR
- 25. 你如何在OS X中使用Scheme?
- 26. 如何在Python 3.x中使用dateutil.relativedelta?
- 27. 如何在ActionScript 3中使用Math.LN(x)
- 28. 如何在qt中使用OpenGL 1.x?
- 29. 如何在Symfony中使用Nginx X-Accel?
- 30. 如何在DNN 6.x中使用Prototype.js?
我不認爲他們是確切的同義詞。 – 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