我正在使用 stat,由于某种原因,它可以在我的一台运行较新版本 bash 的服务器上运行,但不能在旧版本上运行。当然,这些错误确实很常见,但它们来自以下代码块:
while IFS='' read -r line || [[ -n $line ]]; do
IFS=' ' read size file <<< $line
containsElement "$(stat -c %U $file)" "${users[@]}"
if [ $(echo $?) == "1" ] ; then
rm -f $DU_SAVE-$(stat -c %U $file)_du.txt
users+=("$(stat -c %U $file)")
fi
echo $line >> $DU_SAVE-$(stat -c %U "$file")_du.txt
done < "${DU_SAVE}_du.txt"
程序的使用并不是那么重要,但它会从先前保存到文件的 DU 命令中获取用户信息,并将它们添加到列表中。错误的地方是:
stat:缺少操作数 Try
stat --help' for more information. stat: cannot stat
':没有这样的文件或目录
在每个文件上。
编辑:我注意到 read 命令是搞乱 stat 的原因,完全相同的代码在较新的 bash 版本上完美运行,也许我的措辞是错误的。
答案1
当然,我花了一段时间来获得解决方案,然后决定在这里提问,并在提问后 10 分钟内解决它......我经常这样做。
解决方案是我的变量分割命令只是不想在这个版本的 bash 上工作,所以我只是使用cut
分隔符' '
:)