Stat 在 Bash 4.3 中工作但在 Bash 3.2 中不起作用?

Stat 在 Bash 4.3 中工作但在 Bash 3.2 中不起作用?

我正在使用 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分隔符' ':)

相关内容