0

我以这种方式实现的文件系统中有一个缓存。

  1. 为了存储一个值,我做了类似的事情

    echo ""$KEY1"_"$KEY2"="$VALUE" >> $CACHE_DIR/$INDEX.cache
    
  2. 要获得一个值,首先我获取缓存文件:

    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?我可以逃脱/,但还有其他方法吗?

4

2 回答 2

2

没有其他方法,因为/不允许作为 bash 变量中的字符。

于 2012-10-24T16:06:50.293 回答
1

你必须“清理”你的键,因为 bash 只支持变量名:字母、数字和下划线字符。

KEY1=${KEY1//\//_}
KEY2=${KEY2//\//_}
于 2012-10-24T16:50:57.643 回答