linux - 为什么 for 循环中的 file 命令表现得如此荒谬

标签 linux bash shell for-loop echo

#!/bin/sh

file_list=`find . -type f`

IFS=$(echo) #this enables for loop to break on newline
for file_ in $file_list; do
  file $file_
done

这个 shell 脚本会令人惊讶地报告(文件名太长)。我猜脚本给 file 提供了 3 次 $file_list !!!

但是,如果我使用简单的 echo 更改 file 命令,那么脚本将按预期逐行打印当前目录中的所有文件。

最佳答案

迭代 find 的结果不是一个好主意。请改用它的 exec 选项:

find -type f -exec file {} \;

关于linux - 为什么 for 循环中的 file 命令表现得如此荒谬,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33548510/

相关文章:

Linux脚本变量到SCP并删除文件

c - 在封装的内联函数中返回

customization - Oh My Zsh 使用一个别名的多个命令

regex - 从文件名和路径解析日期和时间

bash - 在 Bash 中打印文件的最后修改日期

linux - SonarQube 启动 web 失败

c++ - 指针删除崩溃

解析网站(url)的linux脚本

macos - 如何让 Mac ".command"文件在运行 shell 脚本后自动退出?

macos - Mac 上的 "source"命令