给我看看这个脚本哪里错误,不出结果啊??

sh/bash/dash/ksh/zsh等Shell脚本
回复
dongfl
帖子: 1
注册时间: 2014-03-19 15:00
系统: win7

给我看看这个脚本哪里错误,不出结果啊??

#1

帖子 dongfl » 2014-03-28 10:11

1.判断家目录下是否存在目录file_dir,dir_dir,如果不存在,创建之;如果存在,删除后重新创建
2.遍历当前目录下的所有文件,判断是目录还是普通文件,如果是普通文件,将文件拷贝到家目录下的file_dir;
如果是目录,拷贝到家目录下的dir_dir
3.将file_dir采用bzip2的方式压缩,并移动到共享目录;将dir_dir采用gzip的方式压缩,并移动到共享目录;
4.进入到共享目录,解压上述压缩包

#! /bin/bash
file_dir=$HOME/file_dir
dir_dir=$HOME/dir_dir
share=/mnt/hgfs/share

set -x
if [ -d $file_dir ]
then
rm $file_dir -rf
fi

if [ -d $dir_dir ]
then
rm $dir_dir -rf
fi

mkdir $file_dir
mkdir $dir_dir

flist=`ls`
for file in $flist
do
if [ $#!=1 ]
then
if [ -d $file ]
then
cp $file $dir_dir -a
cd $dir_dir/$1
dls=`ls`
tar -czvf dir.tar.gz $dls
mv dir.tar.gz $share
fi
if [ -f $file ]
then
cp $file $file_dir
cd $file_dir
fls=`ls`
tar -cvjf file.tar.bz2 $fls
mv file.tar.bz2 $share
fi
fi
done

cd $share
tar xvf file.tar.bz2
tar xvf dir.tar.gz
set +x
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

Re: 给我看看这个脚本哪里错误,不出结果啊??

#2

帖子 YeLee » 2014-03-28 10:30

还望阁下能说明一下哪里出了错,另再提醒一下,最好能注意一下$PWD,cd之后要记得回来,毕竟这cd不是fork过去的。 :em01
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
头像
careone
帖子: 839
注册时间: 2007-12-17 21:41

Re: 给我看看这个脚本哪里错误,不出结果啊??

#3

帖子 careone » 2014-04-14 21:57

确认共享目录/mnt/hgfs/share是否存在,已挂载并有写权限

另外调试时建议为 mv 加上 -v 选项,方便查看提示信息
魁拔不死,天下不宁。
魁拔既死,天下不平。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/
头像
zhw2101024
帖子: 1849
注册时间: 2009-03-28 16:10
系统: Arch debian win7
联系:

Re: 给我看看这个脚本哪里错误,不出结果啊??

#4

帖子 zhw2101024 » 2014-04-14 22:31

第一行改成这样

代码: 全选

#! /bin/bash -x
执行一下,看看是哪行出错的先。
jackysc
帖子: 51
注册时间: 2006-12-29 20:45

Re: 给我看看这个脚本哪里错误,不出结果啊??

#5

帖子 jackysc » 2014-04-25 15:55

其实也有运行时调试的方式

代码: 全选

sh -x filename.sh
:em11
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: 给我看看这个脚本哪里错误,不出结果啊??

#6

帖子 astolia » 2014-04-26 21:22

zhw2101024 写了:第一行改成这样

代码: 全选

#! /bin/bash -x
执行一下,看看是哪行出错的先。
jackysc 写了:其实也有运行时调试的方式

代码: 全选

sh -x filename.sh
:em11
你们都没看到别人第二段第一行就是 set -x 么?
回复