Bash - 使用“/”来源文件

时间:2012-10-24 16:02:40

标签: file bash scripting

我在文件系统中有一个缓存,我用这种方式实现。

  1. 要存储值,我会执行类似

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

    source $CACHE_DIR/$INDEX.cache
    

    然后我回复"$KEY1"_"$KEY2"

  3. 缓存示例:

    foo1_foo2=wohohhowwho
    

    问题在于,我有一些其中有“/”的键,所以当我有这个时:

    foo3_foo/4=wohohhowwho
    

    并提供文件来源,它说

    cache/15637.cache: line 1: foo3_foo/4=wohohhowwho: No such file or directory
    

    因为/

    源命令是否有选项不在文件路径中搜索,只将内容计为vars?我可以逃脱/,但还有另一种方法吗?

2 个答案:

答案 0 :(得分:2)

由于不允许/作为bash变量中的字符,因此没有别的办法。

答案 1 :(得分:1)

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

KEY1=${KEY1//\//_}
KEY2=${KEY2//\//_}