我有这样的代码:
declare -A colortable=(
["bcbcbc"]="250"
["c6c6c6"]="251"
["d0d0d0"]="252"
["dadada"]="253"
["e4e4e4"]="254"
["eeeeee"]="255"
)
# get colors from byobu config
if [ -f ~/.config/byobu/color.tmux ]; then
source ~/.config/byobu/color.tmux
else
BYOBU_DARK="\#bcbcbc"
fi
# cut the first two characters
BYOBUCOLOR="${BYOBU_DARK:2}";
#echo $BYOBUCOLOR
LOCALCOLOR="${colortable[$BYOBUCOLOR]}";
当我的color.tmux
中的值用大写字符而不是小写字母定义时, 可以正常工作。如何使查找不区分大小写?
答案 0 :(得分:0)
您可以使用${varname,,}
在参数扩展过程中将变量转换为小写。因此,将执行查询的行更改为:
LOCALCOLOR="${colortable[${BYOBUCOLOR,,}]}"
...始终使用小写的BYOBUCOLOR
进行查找。
(顺便说一下,请考虑切换到小写的变量名:全大写字母的名称可能会与对Shell和POSIX指定的工具有意义的名称发生冲突,就像{{ 1}}破坏了运行其他命令的能力,但是for PATH in */
是安全的。关于这一点,请参阅http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html上POSIX规范的第四段,请记住,设置shell变量会覆盖任何名称相同的变量环境变量,即使未显式调用for path in */
。