Bash词典错误没有这样的文件或目录

时间:2019-03-25 14:45:24

标签: linux bash

我正在尝试制作自己的bash脚本,该脚本将检查给定目录中是否有重复的文件作为参数。除了shasum以外,我无法使用任何预制工具来检查文件的哈希值。使用字典,我想将文件名保存为键,将哈希(由shasum生成)保存为值。以便以后比较结果。但是,如果要尝试此操作,则会出现以下错误。

./duper: line 18: [./duper]=17c24ce4178f3f5283e0342835c56b64600d0ce8: No such file or directory
./duper: line 18: [./duper.backup]=f4097584a410fde440244fddd34321edd2083b99: No such file or directory
./duper: line 18: [./item.txt]=61516f2530f38ece78027250de1b6f5cc14689a5: No such file or directory
./duper: line 18: [./log.txt]=c3a2850427bb5704f94c670bd0cbab5e4303bd0f: No such file or directory
./duper: line 18: [./origin_copy.txt]=0e74dbd74c383c0985fd3627f6c35b74da18c131: No such file or directory
./duper: line 18: [./origin.txt]=0e74dbd74c383c0985fd3627f6c35b74da18c131: No such file or directory
./duper: line 18: [./origin_wrong.txt]=abfb88a05ce9fd93f98eee5b33a88991d2702529: No such file or directory

有人知道我可能在做错什么吗,我已经在网上搜索了几个小时。但似乎无法弄清楚。

现在我的代码:

#!/bin/bash
if [ $# -eq 0 ]; then # Check if argument has been provided
  echo ERROR: No argument supplied!
  exit 1
elif [ ! -d $1 ]; then # Check if directory exists
  echo ERROR: Directory not found!
  exit 2
fi

declare -A arr

for i in $1/*; do
  $arr[$i]=$(shasum -a1 "$i")
done

1 个答案:

答案 0 :(得分:1)

删除原始$中的$arr[$i]=...,使其:

for i in "$1"/*; do
  arr[$i]=$(shasum -a1 "$i")
done