Perl + правильно задать параметр в синтаксисе - PullRequest
1 голос
/ 21 января 2011

Я использую следующую команду find для переименования каталогов и файлов в системе Linux

примечание: см. Скрипт rename.pl ниже

    find  /  -name 'host1' -print0 | xargs -0 /var/tmp/rename.pl 'print "changing $_\n"; s/host1/host_10/g'

чтобы установить параметр вместо имени host1, я установил следующее

OLD_HOST=host1

Пример:

    find  /  -name "$OLD_HOST"  -print0 | xargs -0 /var/tmp/rename.pl 'print "changing $_\n"; s/$OLD_HOST/host_10/g'

проблема в том, что теперь после установки $ OLD_HOSTS (как s / $ OLD_HOST / host_10 / g ')

не заменяет host1 на host_10

мой вопрос: как правильно использовать $ OLD_HOST в синтаксисе для замены host1 на host_10?

#

сценарий rename.pl:

 #!/usr/bin/perl
 #
 # rename script examples from lwall:
 #       rename 's/\.orig$//' *.orig
 #       rename 'y/A-Z/a-z/ unless /^Make/' *
 #       rename '$_ .= ".bad"' *.f
 #       rename 'print "$_: "; s/foo/bar/ if <stdin> =~ /^y/i' *

 $op = shift;
  for (@ARGV) {
    $was = $_;
    eval $op;
    die $@ if $@;
    rename($was,$_) unless $was eq $_;
  }

1 Ответ

0 голосов
/ 21 января 2011

Не очень понятно, что вы пытаетесь сделать.

Я полагаю, вы устанавливаете

OLD_HOST=host1

в оболочке, и вы пытаетесь получить значение переменной $OLD_HOST env из сценария Perl. Если это так, вы можете использовать

$ENV{'OLD_HOST'} 

как:

find  /  -name "$OLD_HOST"  -print0 | xargs -0 /var/tmp/rename.pl 'print "changing $_\n"; s/$ENV{OLD_HOST}/host_10/g'
                                                                                            ^^^^^^^^^^^^^^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...