我在文件系统中有一个缓存,我用这种方式实现。
要存储值,我会执行类似
的操作echo ""$KEY1"_"$KEY2"="$VALUE" >> $CACHE_DIR/$INDEX.cache
要获取值,首先我获取缓存文件:
source $CACHE_DIR/$INDEX.cache
然后我回复"$KEY1"_"$KEY2"
缓存示例:
foo1_foo2=wohohhowwho
问题在于,我有一些其中有“/”的键,所以当我有这个时:
foo3_foo/4=wohohhowwho
并提供文件来源,它说
cache/15637.cache: line 1: foo3_foo/4=wohohhowwho: No such file or directory
因为/
。
源命令是否有选项不在文件路径中搜索,只将内容计为vars?我可以逃脱/
,但还有另一种方法吗?
答案 0 :(得分:2)
由于不允许/
作为bash变量中的字符,因此没有别的办法。
答案 1 :(得分:1)
你必须“清理”你的密钥,因为bash只支持变量名:字母,数字和下划线字符。
KEY1=${KEY1//\//_}
KEY2=${KEY2//\//_}