我在我以这种方式实现的文件系统中有一个缓存。
-
存储一个值我做
之类的事情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?我可以逃脱/
,但是还有另一种方法吗?
没有其他方法,因为不允许/
作为bash变量中的字符。
您必须``sanitize''键,键为bash仅支持可变名称:字母,数字和下划线字符。
KEY1=${KEY1////_}
KEY2=${KEY2////_}