Perl Shebangを含むスクリプトがあり、途中でBashに切り替える必要があります。

Perl Shebangを含むスクリプトがあり、途中でBashに切り替える必要があります。

2つのブロックを持つスクリプトがあります。最初のブロックはPerlで書かれ、2番目のブロックはBashで書かれました。

スクリプトの途中でシェル(perl --> bash)を切り替える方法は?スクリプトは以下に添付されています。

#! /usr/bin/perl -w
#
my @dirs = glob("*.frames");
foreach $dir (@dirs) {
   print "working on $dir\n";
   chdir $dir;
   my @digitfiles = glob ("RawImage_?.tif"); #need to make all files have 2-digit numbering for sort order to be correct
   foreach $file (@digitfiles) {
      my $newfile = $file;
      $newfile =~ s/RawImage_/RawImage_0/;
      rename $file,$newfile;
   }
   my $stackname = "../" . $dir . ".mrc";
   `tif2mrc -s *.tif $stackname`; #IMOD program to stack: -s option means treat input as signed INT
   chdir "../"; #go back up
}

#!/usr/bin/env bash
for f in *.mrc; do mv -- "$f" "${f%%.*}".mrc ; done

ベストアンサー1

Perlでループを再構築してください。

for my $file (glob '*.mrc') {
    ( my $newname = $file ) =~ s/\..*/.mrc/;
    rename $file, $newname or warn "$file: $!";
}

おすすめ記事