BBS.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


奥运快报: 
奥运热点:
 

SHELL编程的编码问题?很奇怪

首页 » 论坛 » Shell »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
zuii
骑士




UID:541874
注册:2007-3-24
最后登录: 2008-08-30
帖子:79
精华:1

可用积分:89 (白手起家)
信誉积分:105
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
1楼 发表于 2008-6-21 23:44 
刚用SHELL写了一段程序,实现复制功能,但出了个奇怪的问题:
        文件名fcp.sh,执行格式为:$./fcp.sh sourcefile   destfile
         目标文件可以是一个目录
    奇怪的问题:当目标文件名中任意一个字是“我”字,都会是乱码
            比如,我要复制一首歌:我们的歌.mp3 到上一级目录,执行命令如下:
                                $./fcp 我们的歌.mp3 ../
            这样在上级目录生成的文件的“我”字就是乱码(两个问号),并且图形界面下文件名后面一个括号,显示说“无效编码”,
     就算在SHELL程序中直接指定名字,也是的,比如把最后一句改成:cat $1>../我们的歌.mp3
            生成的文件还是有乱码,在命令行执行就不会。
而且很奇怪的是,只有这个“我”字是乱码,什么“你他的什么”都是正常的~~匪夷所思阿~~

各位研究下吧,帮忙一下,不胜感激!!!

程序如下:

#!/bin/sh

#If the source filename is a directory,exit
if [ -d $1 ]
then
    echo The first arguments must be a file,not directory!
    exit
fi

currentpath=$(pwd)
newfilename=$2

#While the destination file is a DIR
if [ -d $2 ]
then
    cd $2
    newbasename=$(basename $1)
    newpath=$(pwd)
    newfilename=${newpath}/${newbasename}
    cd $currentpath
fi
cat $1>${newfilename}

[ 本帖最后由 zuii 于 2008-6-21 23:48 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

免费领取1Q币

空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
jinl
光明使者



UID:475574
注册:2006-10-12
最后登录: 2008-08-30
帖子:922
精华:0

可用积分:1137 (家境小康)
信誉积分:100
空间积分:0 (白手起家)
专家积分:39 (本版)

状态:...在线...

[个人空间] [短信] [博客]


[推广] 顶部
2楼 发表于 2008-6-21 23:55 
乱码?没试过含"我"的文件
不过复制 文件怎么使用的cat命令,应该用cp命令



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
zuii
骑士




UID:541874
注册:2007-3-24
最后登录: 2008-08-30
帖子:79
精华:1

可用积分:89 (白手起家)
信誉积分:105
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
3楼 发表于 2008-6-22 01:39 
我是写一个SHELL程序来实现CP的功能阿~~

老师没事做,让分别用C和SHELL写一个简单的CP程序,并且比较他们的执行效率,我在想用SHELL写出来的执行时间肯定会比C的长,结果真的是这样,呵呵~

不过遇到那个乱码的问题。。。

我还想知道,最后那句除了用cat还能用其他方式不?

[ 本帖最后由 zuii 于 2008-6-22 01:42 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

免费领取1Q币

空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
寂寞烈火   帅哥
老法王


CU奥运火炬传递手2008
荣誉会员  
UID:187152
注册:2004-10-1
最后登录: 2008-08-30
帖子:23843
精华:5

可用积分:12668 (大富大贵)
信誉积分:110
空间积分:621 (稍有积蓄)
专家积分:87 (本版)

来自:北京海淀
状态:...在线...

[个人空间] [短信] [博客]


[推广] 顶部
4楼 发表于 2008-6-22 09:33 


QUOTE:
原帖由 zuii 于 2008-6-22 01:39 发表
我是写一个SHELL程序来实现CP的功能阿~~

老师没事做,让分别用C和SHELL写一个简单的CP程序,并且比较他们的执行效率,我在想用SHELL写出来的执行时间肯定会比C的长,结果真的是这样,呵呵~

不过遇到那个乱 ...

当然啦~~~~~~~~



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________


CYGWIN_NT-5.1 a5732224882a41b 1.5.25(0.156/4/2) 2008-06-12 19:34 i686 Cygwin
GNU bash, version 3.2.39(20)-release (i686-pc-cygwin)

空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
fortuneteller
圣骑士




UID:611802
注册:2007-9-3
最后登录: 2008-08-16
帖子:119
精华:0

可用积分:125 (白手起家)
信誉积分:0
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
5楼 发表于 2008-6-22 09:43 
要是二进制文件等不能cat的怎办。而且多个文件cp有cp -r可以复制目录下所有文件,cp还可以复制多个文件。所以我觉得可以用tar ,并且比cat功能全。至于乱码我就不知道了

建议加上
#test if input is null
if [ $#<=1 ]; ]then
echo please input source file and directory

num=$#
#test if the last input parameter is a directory. if is not, exit
if [ -!d $"$num" ]
echo the last parameter is not a directory please input agian  
exit 200  
fi

#test if source file exit
filenum=1
while [ $filenum -lt $num  ]
do
if [ -e $"$filenum" ] ; then
echo file $"$filenum" is exit in this directory
PWD=`pwd`
cd $"$num"
tar -cvf $PWD/$"$filenum" | tar -xvf - #可能有点问题呵呵,也可把文件压缩到临时文件下,从临时文件解压到目标文件不过我没想出来呵呵
rm $"$filenum".tar
cd $pwd
echo the file $"$filenum" has been copyed  

else
    echo file $"$filenum" is not exit in this directory
fi
filenum=`expr $filenum + 1`

done

我很菜的 你好好调试看看吧,希望你调试个完整的脚本后也贴上来。



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
zuii
骑士




UID:541874
注册:2007-3-24
最后登录: 2008-08-30
帖子:79
精华:1

可用积分:89 (白手起家)
信誉积分:105
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
6楼 发表于 2008-6-22 16:57 
LS  用tar的话,是不是效率太低了点啊?
cat复制过去是可以的,我复制了个mp3过去,还是能听~所以应该是支持二进制文件的。。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

免费领取1Q币

空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
walkerxk
大天使
还是不能上网!难道要等残奥 ...



UID:351339
注册:2005-12-18
最后登录: 2008-08-30
帖子:2281
精华:0

可用积分:5267 (富足长乐)
信誉积分:105
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...保密...

[个人空间] [短信] [博客]


[推广] 顶部
7楼 发表于 2008-6-22 17:34 


QUOTE:
原帖由 zuii 于 2008-6-22 16:57 发表
LS  用tar的话,是不是效率太低了点啊?
cat复制过去是可以的,我复制了个mp3过去,还是能听~所以应该是支持二进制文件的。。

用MD5码校验,mp3如果稍微有点差别的话可能还是可以播放的。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

开源资源:
软件下载http://software.lupaworld.com
开源镜像http://mirror.lupaworld.com
手册中心http://man.lupaworld.com
欢迎大家访问,并提出建议和意见。
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
zuii
骑士




UID:541874
注册:2007-3-24
最后登录: 2008-08-30
帖子:79
精华:1

可用积分:89 (白手起家)
信誉积分:105
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
8楼 发表于 2008-6-23 15:35 
顶上来,期待解决~~

除了cat和tar 还有什么方法呢?



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

免费领取1Q币

空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
zuii
骑士




UID:541874
注册:2007-3-24
最后登录: 2008-08-30
帖子:79
精华:1

可用积分:89 (白手起家)
信誉积分:105
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
9楼 发表于 2008-8-21 11:11 
都沉透底了~



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

免费领取1Q币

空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
merlin852   帅哥
精灵王




UID:551382
注册:2007-4-13
最后登录: 2008-08-28
帖子:309
精华:0

可用积分:1518 (家境小康)
信誉积分:100
空间积分:4 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


[推广] 顶部
10楼 发表于 2008-8-21 12:13 
dd



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘

首页 » 论坛 » Shell »


 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.061458 second(s), 4 queries , Gzip enabled