#!/usr/bin/env bash
for x in $(cat $1)
do
wget --recursive -R jpg,bmp,gif,png $x
cd $x
for e in $(ls)
do
a=`file $e | getfield 2`
if [ $a == "directory" ]
then
for enn in $(ls $a)
do
cat $a/$enn | emailaddr
done
else
cat $e | emailaddr
fi
done
cd ..
done
getfield是一个像这样的bash脚本
#!/usr/bin/env
cut -d' ' -f$1 oo
我认为有必要注意我只是想学习shell脚本以使生活更轻松,而不是用ruby或其他语言编写代码来执行shell命令并在我可以这样做的时候输出输出。
我知道当我执行= file $e | getfield 2
时,我的脚本会挂起,但我似乎无法弄明白为什么。有人可以为我澄清一下吗?
答案 0 :(得分:1)
根本不需要getfield
。 bash
有一个内置测试来检查文件是否是目录。
if [[ -d $e ]]; then
脚本本身更好地写为
while IFS= read -r x; do
wget --recursive -R jpg,bmp,gif,png "$x"
cd "$x"
for e in *; do
if [[ -d $e ]]; then
cat "$e"/* | emailaddr
else
emailaddr < "$e"
fi
done
cd ..
done < "$1"