我要实现在一个目录下根据ls -l文件的日期,删除一个月以前的文件,我用了以下code,但是提示Ntemp: Undefined variable。还有在一开始就提示Command not found。
#!/bin/csh
#echo "取得系统当前日期"
NDate=`date |awk '{print $1}'`
Ntemp=`date |awk '{print $2}'`
NYear=`date |awk '{print $6}'`
#echo $Ntemp
case $Ntemp in
Jan) NMonth="01" ;;
Feb) NMonth="02" ;;
Mar) NMonth="03" ;;
Apr) NMonth="04" ;;
May) NMonth="05" ;;
Jun) NMonth="06" ;;
Jul) NMonth="07" ;;
Aug) NMonth="08" ;;
Sep) NMonth="09" ;;
Oct) NMonth="10" ;;
Nov) NMonth="11" ;;
Dec) NMonth="12" ;;
*) echo "not found
";exit ;;
esac
#echo $NMonth
#echo "取得要删除的文件日期月份"
if [NMonth==1] then
DMonth = 12
else
DMonth = NDate-1
fi
#echo "取得文件日期"
while
do
FDate=`ls -l |awk '{print $7}'`
Ftemp=`ls -l |awk '{print $6}'`
#FYear=`ls -l |awk '{print $0}'`
FileName=`ls -l |awk '{print $9}'`
case $Ftemp in
Jan) FMonth="01" ;;
Feb) FMonth="02" ;;
Mar) FMonth="03" ;;
Apr) FMonth="04" ;;
May) FMonth="05" ;;
Jun) FMonth="06" ;;
Jul) FMonth="07" ;;
Aug) FMonth="08" ;;
Sep) FMonth="09" ;;
Oct) FMonth="10" ;;
Nov) FMonth="11" ;;
Dec) FMonth="12" ;;
*) echo "not found
";exit ;;
esac
#echo $FMonth
if [DMonth>FMonth] then
rm -f $FileName
elif [DMonth==FMonth]&&[NDate>FData] then
rm -f $FileName
fi
done
请教各位大虾,怎么样去除这种错误?而且,假如我要删除一年前的文件,用ls -l命令怎么找年的时间?我用的环境是OSF1 alpha V4.0.
谢谢!
至于你的代码错误有:
1. 你这个怎么会是c shell?应该是 B shell 阿。所以第一行应为 #!/bin/sh
2. if [NMonth==1] then 错了!,这句有多个错误啊应为 if [ $NMonth -eq 1 ] ; then
或者 if [ $NMonth -eq 1 ] #换行
then
3. DMonth = NDate-1 错了。应为 DMonth=`expr $NDate - 1`
。。。。。。
不找了,建议你找shell书先看看。
NDate=`date |awk '{print $1}'` 可以用 date '+%d' 更方便。
测试一下语句:
#!/bin/sh
echo "test
"
echo -e "test
"