변수를 사용하여 쉘 스크립트 호출

변수를 사용하여 쉘 스크립트 호출

내부적으로 변수를 호출하는 쉘 스크립트가 있습니다(실행 가능한 쉘 스크립트를 저장하기 위해).

쉘 스크립트 시작

var=$(awk -F'|' '{print $2}' $TEMPFILE)

변수의 값은. /lapp2/Scripts/mdm.ksh

쉘을 호출하여 실행

$var

위의 쉘 실행 방법이 실패합니다. (문자열로 읽히나요?)

그러나 명령을 직접 작성하면 쉘 스크립트가 실행됩니다.

답변1

귀하의 변수에 $var귀하가 명시한 값이 포함되어 있지 않습니다. 귀하의 질문에 따르면 다음 내용이 포함되어야 합니다.

. /lapp2/Scripts/mdm.ksh

그러나 디버그 값은 실제로 다음이 포함되어 있음 echo "var is '$var'"을 보여줍니다 .$var

/etlapp2/$1/mdm/Scripts/mdmxftpg.pl /etlapp2/$1/mdm/Scripts/mdmxftpg.aimtlane

여기에는 두 가지 문제가 있습니다. 실제 값이 예상 값이 아니라는 것은 분명합니다. 그러나 더 미묘하게 말하면 경로의 일부에는 첫 번째 명령줄 인수의 보간이 아닌 $var리터럴이 포함되어 있습니다 . $1할당하는 동안 어느 시점에서 큰따옴표 대신 작은따옴표를 사용한 것 같습니다 $var.

이 두 가지 옵션을 비교해보세요

  • a='apple'; var='/path/to/$a/script.sh'; echo "var=$var" # incorrect
  • a='apple'; var="/path/to/$a/script.sh"; echo "var=$var" # correct

코드를 검사하여 값이 예상과 다른 이유를 찾아내고 이러한 오류를 수정해야 합니다.

관련 정보