在 bash 中对仅匹配 .pcap 文件的文件目录执行嵌套 for 循环是否合法?
ROOTFILEPATH = '/a/path'
FILEEXT = '.pcap'
for file in $ROOTFILEPATH
for $FILEEXT in file; do
#do something
done
谢谢。
答案1
无需嵌套循环,您可以告诉第一个循环仅作用于*.pcap
文件。
#! /bin/bash -
for CUR_FILE in "/PATH/TO/DIR/"*.pcap; do
echo "$CUR_FILE"
done
答案2
要循环遍历目录,仅选择给定的扩展名,其中目录和扩展名都是变量:
rootfilepath='/a/path'
fileext='.pcap'
for file in "$rootfilepath"/*"$fileext"
do
: something with "$file"
done
我对你原来的内容做了一些修改:
- 小写变量名。只是一个约定;它有助于避免多个名称全部大写的内置变量。
- 删除了变量赋值周围的空格;否则,变量名称本身将被视为带有两个参数来执行的命令:等号和剩余的变量值。
do
在循环中添加了一个缺失值- 在目录和文件扩展名之间使用 shell 通配符 (
*
) 来获取该路径中具有该扩展名的所有文件