#!/bin/sh
cd ~/Documents/workspace
function checkDir(){
for file in `ls $1`
do
if [ -f $1"/"$file ]
then
if [ $file = "R.java" ]
then
echo $1"/"$file
while read LINE
do
if [ ${#LINE} = 55 ]
then
echo $LINE
fi
done < $1"/"$file
fi
elif [ -d $1"/"$file ]
then
checkDir $1"/"$file
else
echo "wrong"
fi
done
}
checkDir .
作为一个程序员,居然不会写脚本,太不给力了。
今天折腾了两个小时,写了一个无比简单的脚本。开启我的写脚本之旅。
今天遇到的问题:
1. 一开始调用方法的时候使用的是
checkDir ./*
dir=$1
for file in $dir
...
我想要的效果是,循环指定目录下所有的文件(包括目录)
但是实际运行出来发现,这个写法,只能取一个值。其余的都不循环了。
于是目录还是改成
checkDir .
方法中直接使用ls
for file in `ls $1`
一开始在循环中,进入下一层目录,然后列举当前目录
cd $file
checkDir .
但是发现进了一层目录之后回不来了
于是不要进目录,而是直接检查就可以了
checkDir $file
3. 可以递归目录了,但是判断-f、-d失败
echo出来的文件名也是对的,但是就是判断-f、-d一直是false。
百般折腾,最后发现,确实不是文件啊,文件是要指定目录的。
于是用到文件的地方,都改成
$1"/"$file
这样就把上层目录和当前文件名拼起来,凑成了一个完整的路径。-f、-d也能成功判断了。
4. 由于使用 $1"/"$file 拼路径的地方还挺多,于是想着是不是可以把这个路径赋值给一个变量,以后都用这个变量
filepath=$1"/"$file
if [ -f filepath ]
...
但是不知为何,反而不可以了。。。算了,不折腾了,今天有点累了。。。
参考资料: