]> git.donarmstrong.com Git - uiuc_igb_scripts.git/blobdiff - dqsub
only escape if the command contains a space
[uiuc_igb_scripts.git] / dqsub
diff --git a/dqsub b/dqsub
index 910cafd20b9eb08b9329e5ab48983b31230fef66..1682d058c4871516720932a1a80f29ef2cd447ad 100755 (executable)
--- a/dqsub
+++ b/dqsub
@@ -32,6 +32,7 @@ dqsub [options]
    --mem memory to request
    --dir Directory to run the script in (default current directory)
    --account, -A Account name to use
+   --join, -J join error and output streams (default)
    --name, -N Name of the job
    --debug, -d debugging level (Default 0)
    --help, -h display this help
@@ -65,6 +66,11 @@ given, arguments will be read from STDIN.
 
 Account name to use
 
+=item B<--join, J>
+
+Whether to join STDOUT and STDERR. On by default; disable with
+C<--nojoin>.
+
 =item B<--debug, -d>
 
 Debug verbosity. (Default 0)
@@ -99,6 +105,7 @@ my %options = (nodes           => 1,
                man             => 0,
                interactive     => 0,
                array_per_job   => 1,
+               join            => 1,
               );
 
 GetOptions(\%options,
@@ -112,6 +119,7 @@ GetOptions(\%options,
            'array_all_in_one_job|array-all-in-one-job!',
            'ppn|processors-per-node=i',
            'account|A=s',
+           'join|J!',
            'mem|memory=s',
            'time|walltime=s','cputime|cput=s','host=s',
            'pmem|process_mem|process-mem=s',
@@ -142,7 +150,10 @@ if ($options{interactive} and @ARGV) {
 }
 
 # pod2usage(join("\n",@USAGE_ERRORS)) if @USAGE_ERRORS;
-print STDERR join("\n",@USAGE_ERRORS) and exit 1 if @USAGE_ERRORS;
+if (@USAGE_ERRORS) {
+    print STDERR map {"$_\n"} @USAGE_ERRORS;
+    exit 1;
+}
 
 # OK. Generate the options to qsub which we'll be using
 my @qsub_options = generate_qsub_options(\%options,\@ARGV);
@@ -208,7 +219,13 @@ sub generate_qsub_options{
     if ($options->{name}) {
         push @qo,'-N',$options->{name};
     } else {
-        push @qo,'-N',join('_',@{$args}[0..min($#{$args},2)]);
+        push @qo,'-N',join('_',
+                           map {my $a = $_; $a =~ s/[^a-zA-Z0-9]*//g; $a;}
+                          @{$args}[0..min($#{$args},2)]);
+    }
+    # join error and output streams
+    if ($options->{join}) {
+        push @qo,'-j','oe';
     }
     return @qo;
 }
@@ -243,7 +260,7 @@ sub write_qsub_script {
     my ($opt,$arg,$array) = @_;
 
     my $script = "#!/bin/bash\n";
-    my $command = join(' ',map {qq('$_')} @{$arg});
+    my $command = join(' ',map {$_ =~ /\s/?qq('$_'):$_} @{$arg});
         $script .= <<EOF;
 # this script was written by dqsub
 EOF