2013-08-30 47 views
1

我在我的主目录.phpsh.php_history有两个文件,并使用它们的名字我想测试路径名的扩展以及它如何影响bash中的关联数组。我遇到的结果似乎很奇怪,我不能解释它们。我在这里尝试了一大堆变化。Bash数组和路径名扩展:奇怪的输出

>my_array_filename_var=(".phpsh"=10 ".php_history" =20) 
>echo ${my_array_filename_var[.phpsh]} 
ERROR 
>echo "${my_array_filename_var[.phpsh]}" 
ERROR 
# This one below understandably doesn't work. But I was pulling my hair out. 
>echo "${my_array_filename_var[".phpsh"]}" 
ERROR 
echo "${my_array_filename_var[\".phpsh\"]}" 
ERROR 
>echo "${my_array_filename_var[.phpsh]}" 
ERROR 
>echo "${my_array_filename_var[phpsh]}" 
.phpsh=10 
>echo "${my_array_filename_var[php_history]}" 
.phpsh=10 
>echo "${my_array_filename_var[\.php_history]}" 
ERROR 

其中ERROR令牌代表

bash: .phpsh: syntax error: operand expected (error token is ".phpsh") 

有一些规定说,我不能在我的关键点字符的关联数组? bash中的路径名扩展如何与此一起玩?

回答

5

你应该declare -A(大写字母A)一个bash中的关联数组。这是正确的语法:

$ declare -A my_array_filename_var=([.phpsh]=10 [.php_history]=20) 
$ echo "${my_array_filename_var[.phpsh]}" 
10 

或者

$ declare -A my_array_filename_var 
$ my_array_filename_var=([.phpsh]=10 [.php_history]=20) 
$ echo "${my_array_filename_var[.phpsh]}" 
10