免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3306 | 回复: 10
打印 上一主题 下一主题

perl 产生的每个sh文件的每一个路径后面都会有^M存在!!为什么! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-05-21 17:55 |只看该作者 |倒序浏览
我在写一个程序。

perl程序:
#! /usr/bin/perl -w
use strict;
use File::Basename qw(basename dirname);
use FindBin qw($Bin $Script);

die "Usage:\nperl $0 <outDir> <config>\n" unless @ARGV==2;

my ($outDir,$config)=@ARGV[0,1];
my $a=`awk -F"=" '{if(NR==1){print \$2}}' $config`;chomp $a;
my $b=`awk -F"=" '{if(NR==2){print \$2}}' $config`;chomp $b;
my $c=`awk -F"=" '{if(NR==3){print \$2}}' $config`;chomp $c;
my $e=`awk -F"=" '{if(NR==5){print \$2}}' $config`;chomp $e;
my $f=`awk -F"=" '{if(NR==6){print \$2}}' $config`;chomp $f;
my $bin="$outDir/sh.e.o/CBin";
`mkdir -p $bin` unless -d "$bin";       

        for my $i(1..22)
        {
                my $g="$b/$i.txt";
                my $in="$e/$i.txt";
                my $sh="$bin/ch$i.sh";
                open SH,">$sh" or die $!;
                print SH "#!/bin/sh\n#\$ -S /bin/sh\necho -n Start Time:;date\n";
                print SH "$f -Q k -t -u -2 -i $in -d $g -L $a ";               
                print SH "echo -n End Time:;date\n";
                close SH;
               
                LIST:
                {
                        my $jobID=`qsub -cwd -S /bin/sh -q ab.q -P a_b -l vf=1.5G -e $sh.e -o $sh.o $sh`;
                        print "$jobID";
                }
               
        }
       
假设路径如下:
        $f =/table/abc
        $e =/table/bcd
        $b =/table/test
        $a =/table/ef

产生的结果:
#!/bin/sh
        #\$ -S /bin/sh
    echo -n Start Time:;date
    /table/abc^M -Q k -t -u -2 -i /table/bcd/1.txt^M -d /table/test/1.txt^M -L /table/ef^M
        echo -n End Time:;date

就是不知道为什么。产生的每个sh文件每一个路径的后面都会有^M存在。
我尝试过用$a= ~s/[\r\n]//,出来的结果是asicll值,就不是我要的地址
也尝试过$dos2unix filename 发现没用 所以特放上来 。
请各位大神指点!!!
小女子感激不尽啊!!

论坛徽章:
0
2 [报告]
发表于 2013-05-21 18:05 |只看该作者
本帖最后由 picbhan 于 2013-05-22 14:12 编辑

应该是你输入文件是dos格式的,可以qx'dos2unix $config'。

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
3 [报告]
发表于 2013-05-21 20:08 |只看该作者
不知道

论坛徽章:
0
4 [报告]
发表于 2013-05-21 20:18 |只看该作者
问题已经解决了。是因为我是用Notepad写完config文件后,直接导入的。所以主要问题是处在config文件上。。程序没有问题。谢谢啦~
还有,``中间是可以插变量的。。回复 2# picbhan


   

论坛徽章:
0
5 [报告]
发表于 2013-05-21 20:21 |只看该作者
问题解决了。是config文件的问题,config文件是直接导入的,所以用的时候出现问题了。代码是正确的。嘿嘿回复 3# rubyish


   

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
6 [报告]
发表于 2013-05-21 20:26 |只看该作者
config文件有 ? 问题

论坛徽章:
0
7 [报告]
发表于 2013-05-22 08:40 |只看该作者
可以用fromdos或者unix2dos等工具解决

论坛徽章:
0
8 [报告]
发表于 2013-05-22 09:33 |只看该作者
回复 2# picbhan
反引号不能内插perl变量的说法是从哪里来的,这几天我看到好几处这么说了,我也信以为真,刚才测试了一下可以内插perl变量。
只是反引号中不能使用shell的一些环境变量了,例如$HOME等,会提示Global symbol "$HOME"不存在


   

论坛徽章:
0
9 [报告]
发表于 2013-05-22 14:07 |只看该作者
回复 8# yinsong198611


    是我记错了,反引号是可以内插,另一种形式qx的只有qx''可以内插,其他格式不能内插变量。

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
10 [报告]
发表于 2013-05-22 14:17 |只看该作者
这几天我也看到好几个反引号不能内插变量的说法,
我也信以为真了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP