2014-04-21 1 views
0

파일 이름에 환경 변수가있는 목록이 있습니다. 파일을 한 줄씩 읽은 다음 줄에 읽음으로 변수를 설정하고 envirnment 변수를 적절한 환경 변수로 변환하고 싶습니다. 여기 내 스크립트는 지금까지입니다 :KSH 전체 파일에 대한 환경 변수 해결

내 소스 파일입니다
#!/bin/ksh 

. /test/currentEnv.sh 

while read line 
do 
     echo $line 
done < $1 

경우 : currentEnv.sh에서

foo1$ENVVAR1.csv 
foo2$ENVVAR2.csv 
foo3$ENVVAR3.csv 

내 환경 변수

$ENVVAR1=hello;  export ENVVAR1  
$ENVVAR2=world;  export ENVVAR2 
$ENVVAR3=test;  export ENVVAR3 

가 나는 결과를 싶습니다

있습니다 스크립트는

foo1hello.csv 
foo2world.csv 
foo3test.csv 

현재 그냥 원본 파일 밖으로 덤프 :

foo1$ENVVAR1.csv 
foo2$ENVVAR2.csv 
foo3$ENVVAR3.csv 

편집을

내 파일의 대부분이 사용하여 해결 얻을 수있었습니다! #/빈/ksh를

. /test/currentEnv.sh 

while read line 
do 
     eval echo $line 
done < $1 

그러나 일부 내 변수의 문자열은 다음과 같습니다.

foo3$ENVVAR3_bar.csv 

thi S는 ENV 변수 $ ENVVAR3_bar을 찾아 보인다 그것이 내가 출력이 필요 찾을 수 없습니다 :

$var=value  # no 
var=value  # yes 
  • :
  • 답변

    2
    1. foo3test_bar.csv 
      
      당신은 변수 없이 달러 기호를 선언

      밑줄은 변수 이름에 유효한 문자이므로 ksh는 ENVVAR3_bar 변수를 확장하려고합니다. 변수 이름을 주변 텍스트와 구분하려면 중괄호를 사용해야합니다.

      foo3$ENVVAR3_bar.csv  # no 
      foo3${ENVVAR3}_bar.csv # yes 
      
    +0

    중괄호로 표시했습니다. 나는 $가없는 변수를 선언하고 잘못 입력했습니다. 의견을 보내 주셔서 감사합니다. – user3558332