当前位置: 技术问答>linux和unix
一个简单的shell编程题
来源: 互联网 发布时间:2016-07-10
本文导语: 编写一个shell脚本程序,可以实现对备份文件进行更名:要求每次最新备份的数据存放到backupfile文本文件中,之前备份的文件更名为backupfile1,再之前备份的文件更名为backupfile2,依次类推backupfilen,不对n的数量做限...
编写一个shell脚本程序,可以实现对备份文件进行更名:要求每次最新备份的数据存放到backupfile文本文件中,之前备份的文件更名为backupfile1,再之前备份的文件更名为backupfile2,依次类推backupfilen,不对n的数量做限制。
我编写了如下代码:
#!/bin/bash
echo "Input the file that you want to backup please"
read file
ls|grep -c backupfile=n
echo $n
for (( i=$(($n-1));i!=0;i-- ))
do
mv "backupfile${i}" "backupfile{${i}+1}"
done
echo $n
if [ n > 0 ]
then
mv backupfile backfile1
cp file backupfile
else
cp file backupfile
fi
exit 0
为什么不正确?请高手来指点一下
我编写了如下代码:
#!/bin/bash
echo "Input the file that you want to backup please"
read file
ls|grep -c backupfile=n
echo $n
for (( i=$(($n-1));i!=0;i-- ))
do
mv "backupfile${i}" "backupfile{${i}+1}"
done
echo $n
if [ n > 0 ]
then
mv backupfile backfile1
cp file backupfile
else
cp file backupfile
fi
exit 0
为什么不正确?请高手来指点一下
|
set -x
echo "Input the file that you want to backup please"
read file
m=0
m=`ls|grep -c backupfile`
echo $m
n=$m
while [ $n -gt 1 ]
do
nn=`expr $n - 1`
mv "backupfile${nn}" "backupfile${n}"
n=`expr $n - 1`
done
echo $m
if [ $m -gt 0 ]
then
mv backupfile backupfile1
cp $file backupfile
else
cp $file backupfile
fi
exit 0
已经可以运行的脚本,不要随意删除空格
另外,不知道你为什么要保留原文件,以及备份文件名为什么不弄成 原文件名+backupfile+n ,这样a.txt和b.txt的备份文件名都是,backupfile+n。
另外,原脚本
ls|grep -c backupfile=n 不对
for (( i=$(($n-1));i!=0;i-- )) shell中的for循环不能这么写,不要和C的混肴,我也不知道怎么用shell中的for实现这个功能,只能改成while
if [ n > 0 ] > 不对,-gt
|
ls|grep -c backupfile=n
你这是干什么?是不是要统计有多少个备份文件?
好像应该这样写
n=`ls|grep -c backupfile`
你这是干什么?是不是要统计有多少个备份文件?
好像应该这样写
n=`ls|grep -c backupfile`
|
这个是对的哦 把文件的数目赋给n
|
nod
楼主变量要放在左边。