linux - 解释 shell 脚本代码 "for loop"

标签 linux bash shell loops unix

有人能给我解释一下这个循环是什么吗?

for file in `ls *SC*`; do 
  for content in `cat $file `; do
    scid=`echo $file|awk -F'.' '{print $1}'`
    printf "%-10s%s\n" $scid $content
  done
done > text1

最佳答案

在此循环中,编写的 shell 代码很糟糕(性能、奇怪文件名后的错误)。
外循环:

for file in `ls *SC*`; do 
done > text1

尝试查找名称中包含 SC 的所有文件,对其执行某些操作,并将输出写入 text1。更好的是:for file in *SC*;做

内循环:

  for content in `cat $file `; do
  done

对文件中的每个单词执行一些操作。

scid=`echo $file|awk -F'.' '{print $1}'`

该行属于内循环之外。它从第一个点开始截断(删除文件名中带 1 个点的扩展名)。您可以使用cut或更快的${file%.*}

printf "%-10s%s\n" $scid $content

打印截止文件名(最少 10 个位置:附加空格)和第一个单词,当 scid 或内容包含特殊字符时,两者都可能失败(更好的 printf "%-10s%s\n""$scid""$content")。

关于linux - 解释 shell 脚本代码 "for loop",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34374596/

相关文章:

linux - 通过标准输入从 shell 脚本提交多个文件

linux - 我如何知道我是否在运行嵌套 shell?

bash - 使用 shell 脚本检查字符串是否包含数组元素

linux - Linux 的最大管道命令

C++/OpenFST - 查找库和链接时出错

linux - 找出哪个进程正在使用共享内存

php - undefined variable argc PHP

shell - 复制标准输出,将其通过管道传输到两个不同的命令,将两者的结果收集到最终程序的标准输入

python - python脚本的CPU使用率

linux - 有人可以向我解释这些 "sed"命令以及它们在做什么吗?