gkb*_*986 1 arrays bash pathname
我在我的主目录的两个文件.phpsh,并.php_history使用他们的名字我想测试路径名的扩展以及它如何影响在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
Run Code Online (Sandbox Code Playgroud)
当ERROR令牌代表
bash: .phpsh: syntax error: operand expected (error token is ".phpsh")
Run Code Online (Sandbox Code Playgroud)
是否有一些规则说我的关键数组的键中没有点字符?bash中的路径名扩展如何发挥作用?
你应该declare -A(资本A)bash中的关联数组.这是正确的语法:
$ declare -A my_array_filename_var=([.phpsh]=10 [.php_history]=20)
$ echo "${my_array_filename_var[.phpsh]}"
10
Run Code Online (Sandbox Code Playgroud)
要么
$ declare -A my_array_filename_var
$ my_array_filename_var=([.phpsh]=10 [.php_history]=20)
$ echo "${my_array_filename_var[.phpsh]}"
10
Run Code Online (Sandbox Code Playgroud)