I have two files in my home directory .phpsh
and .php_history
and using their names I wanted to test the expansion of pathnames and how it affects associative arrays in bash. The results I came across seemed weird and I couldn't quite explain them. I've tried a whole bunch of variations here.
>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
where the ERROR
token stands for
bash: .phpsh: syntax error: operand expected (error token is ".phpsh")
Is there some rule that says I can't have the dot character in my key for an associative array? How does pathname expansion in the bash play with this?
You should
declare -A
(capital A) an associative array in bash. This is the correct syntax:Or