【问题标题】:Recording name and source path of a file in a persistent storage in bash [duplicate]在bash的持久存储中记录文件的名称和源路径[重复]
【发布时间】:2021-11-09 14:14:00
【问题描述】:

我正在尝试为自动化编写备份和恢复功能。

我正在努力用路径信息填充字典。

这是来自备份功能的 sn-p。

    FILE="path/to/file"
    BASENAME=$(basename $FILE)

    key="$BASENAME"
    value="$FILE"
    test_dict[$key]=$value

    echo ${test_dict[*]}

我明白了

    bash: package.json: syntax error: invalid arithmetic operator (error token is ".json")

这是我的第一个 bash 脚本,我并不关心我正在使用什么存储类型,无论是数组、字典等...我关心的只是跟踪哪个文件属于哪个位置。

这是我的第一个 bash 脚本,如果这是我身边的一个小问题/错误,非常抱歉。

非常感谢您对此的意见。

干杯:)

编辑:test_dict 声明为:

    declare -a test_dict

【问题讨论】:

  • 你没有说是哪一行导致了错误。您也没有显示test_dict 是如何定义和初始化的。
  • 您需要报价:test_dict[$key]="$value"
  • declare -A test_dict 用于关联数组。
  • @Jetchisel "bash: declare: -A: invalid option",在上面的例子中我使用declare -a test_dict 来声明字典
  • @muriaie:您是否将变量声明为 associative 数组(即字典)?否则这样使用会报错。

标签: arrays bash shell dictionary sh


【解决方案1】:

因为我的 shell 不接受declare -A,所以我陷入了所有这些混乱之中,这是将其声明为关联的。

运行bash --version 吐出:

GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin20)
Copyright (C) 2007 Free Software Foundation, Inc.

我所要做的就是将 bash 更新到最新版本。为此我使用:brew update && brew install bash

现在我的代码可以正常工作了。

M :)

【讨论】:

    猜你喜欢
    • 2014-07-24
    • 2016-02-23
    • 2011-02-09
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 2019-04-21
    • 2011-11-30
    • 1970-01-01
    相关资源
    最近更新 更多