linux - Bash字典错误没有这样的文件或目录

标签 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

最佳答案

去掉原来的$arr[$i]=...中的$,使得:

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

关于linux - Bash字典错误没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55340418/

相关文章:

python - 如何在python中通过SSH注入(inject)命令?

Bash:将命令输出和时间戳附加到文件

linux - malloc() 是根据单线程还是多线程执行不同的?

linux - 如何使用 scrapy 命令动态创建 Feed Export 的文件名

linux - 检查IP是否存在于/etc/hosts

Bash 用网络替换可变 IP 地址

linux - Unix/Linux 命令向数字字符串添加 30 分钟

linux - 如何在linux上使用 "pmap"查找我编写的程序的内存使用情况

regex - 删除模式前的空行。怎么了?目前使用 Perl 但对 sed/AWK 开放

linux - 如何在linux中用最少的单词输出一个文件