gpt4 book ai didi

linux - 将 find 和 md5sum 命令的结果保存到数组中以供进一步处理

转载 作者:太空宇宙 更新时间:2023-11-04 04:35:28 26 4
gpt4 key购买 nike

我需要保存 find+md5sum 命令的结果,以便在 for 循环内进一步处理。如何正确地将其保存到数组变量中?这是我的脚本的一部分,其中包含一些测试数据:

IFS=\n
FILES_1=($(find ${DIR_1} -type f -exec md5sum {} + | sort -k 2))

i=0
for line in ${FILES_1[*]} ; do
echo ${line}
i=$(($i+1))
done
echo ${i} #just for check

结果:

d0c096a5b5d91ab188723713fd5e6357  test/dir1/dir/qwerty.py
e90d6e2e9e0e4554d902fe84b6e08604 test/dir1/dir/source.py
e98cf83497d25feea1e37274183744c3 test/dir1/file.txt
e5bd0a793460559be2e689d39ad9f037 test/dir1/file2.txt
222bec76ce8f3afc0b44ae409d2b03bf test/dir1/script1.py
bdd50254b0036bc6b7c136f335f1460e test/dir1/script2.py
eead78462722fce1e7e27a2ec69b78bd test/dir1/script3.py
7f609c0dd1490a5e8e4f69ddcdec6500 test/dir1/script4.py
3d4f2eb5d55096a02214e21701a472fa test/dir1/script5.py

所以,执行后 i = 1,而不是 9。并且我无法通过索引 (i) 访问某个元素。我的意思是,如果我写“echo ${FILES_1[0]}”,我希望看到一个(第一个)字符串,但如果“echo ${FILES_1[1]}”,我会看到所有字符串,但什么也看不到。看起来只是一根绳子。我做错了什么?

最佳答案

IFS=\n

您将输入字段分隔符设置为\斜杠(文字斜杠)或n(文字字母n)。输入中没有斜杠或 n,因此所有内容都会分配给数组的第一个元素。

你想要:

IFS=$'\n'

$'...' 结构将其内部的转义序列扩展为其他字符。 \n 转义序列在 $'' 内部扩展为换行符(十六进制为 0x0a)。

关于linux - 将 find 和 md5sum 命令的结果保存到数组中以供进一步处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57734319/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com