作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
脚本目标很简单。
我有很多目录,其中包含一些捕获的流量文件。我想为每个目录运行一个命令。所以我想出了一个脚本。但我不知道为什么脚本只在第一次匹配时运行。
#!/bin/bash
# Collect throughput from a group of directory containing capture files
# Group of directory can be specify by pattern
# Usage: ./collectThroughputList [regex]
# [regex] is the name pattern of the group of directory
for DIR in $( ls -d $1 ); do
if test -d "$DIR"; then
echo Collecting throughputs from directory: "$DIR"
( sh collectThroughput.sh $DIR > $DIR.txt )
fi
done
echo Done\!
我试试:
for DIR in $1; do
或
for DIR in `ls -d $1`; do
或
for DIR in $( ls -d "$1" ); do
或
for DIR in $( ls -d $1 ); do
但结果是一样的。 for 循环只运行一次。
最后我找到了这个并做了一些技巧让它工作。但是,我想知道为什么我的第一个脚本不起作用。
find *Delay50ms* -type d -exec bash -c "cd '{}' && echo enter '{}' && ../collectThroughput.sh ../'{}' > ../'{}'.txt" \;
"*Delay*"是我想用来运行命令的目录模式名称。感谢您指出问题。
最佳答案
既然要查找$1下的所有子目录,就这样使用:
for DIR in $(find $1 -type d)
关于linux - bash 脚本中的 "For"循环只运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15829580/
我是一名优秀的程序员,十分优秀!