내부적으로 변수를 호출하는 쉘 스크립트가 있습니다(실행 가능한 쉘 스크립트를 저장하기 위해).
쉘 스크립트 시작
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
코드를 검사하여 값이 예상과 다른 이유를 찾아내고 이러한 오류를 수정해야 합니다.