2011-01-21 2 views
1

구문에 올바르게 매개 변수를 설정 + : 매개 변수를 설정하기 위해펄 내가 리눅스 시스템에 디렉토리를</p> <p>발언을 & 파일의 이름을 변경하려면 다음 find 명령을 사용

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

아래 rename.pl 스크립트를 참조

: 장소 host1의 이름으로 나는 다음과 같은

OLD_HOST=host1 

예를 설정 0

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

문제는 이제 (S/$ OLD_HOST/host_10/g '같은) $ OLD_HOSTS을 설정 한 후

이 host_10

내 질문을 host1의 대체하지 않는다는 것입니다 : 올바르게 사용하는 방법 host1을 host_10으로 바꾸려면 구문에서 $ OLD_HOST를 사용 하시겠습니까?

#

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 [email protected] if [email protected]; 
    rename($was,$_) unless $was eq $_; 
    } 

답변

0

그것은 당신이 뭘 하려는지 매우 분명하지 않다.

는 당신이 셸에서

OLD_HOST=host1 

을 설정하는 당신이 펄 스크립트에서 $OLD_HOST ENV 변수의 값을 취득하려고하는 것 같아요. 그래서 당신은 사용을 할 수있는 경우

$ENV{'OLD_HOST'} 

등 :

find/-name "$OLD_HOST" -print0 | xargs -0 /var/tmp/rename.pl 'print "changing $_\n"; s/$ENV{OLD_HOST}/host_10/g' 
                          ^^^^^^^^^^^^^^ 
관련 문제