오랫동안 본 가장 미친 짓이라고 말할 수 있습니다.Linux/Unix Scripting - 몇 줄에서 이상한 동작 - 가변적이지만 비어 있음
나는 쉬 스크립트에 CentOS 5.4에서 실행이 (의 일부)가 :
# Check GOLD_DIR`
echo $GOLD_DIR"<--"
#export GOLD_DIR=/share/apps/GOLD_Suite/GOLD <uncommenting this line works!!
if [ "X$GOLD_DIR" = "X" ] ; then
echo "ERROR: GOLD_DIR is (probably) not set on host ${HostName}" >> ${3}
exit 1
fi
을 그리고 이것은 다음과 같은 출력을 제공합니다 : 당신이합니다 (GOLD_DIR
변수가 설정되어 볼 수 있듯이
/share/apps/GOLD_Suite/GOLD<--
Waiting for 5 seconds ..... Testing output
The test script did spawn a job (i.e. PVM ran OK),
but errors were detected in the test script output
on the host machine: Below is the output
ERROR: GOLD_DIR is (probably) not set on host xxx.yyy.local
을 스크립트는 출력 결과에 "<--
"이 붙어있는 것을 찾습니다. 스크립트 코드 (첫 번째 스 니펫)에 변수 GOLD_DIR
의 내보내기를 주석 처리하지 않으면 모든 것이 작동합니다.
편집 : GOLD_DIR
/etc/profile
에 수출되고
어떤 아이디어 왜 (export GOLD_DIR=/share/apps/GOLD_Suite/GOLD
사용)?
주 1 : 중요한지는 모르지만 PVM의 스폰 스크립트입니다.
주 2 : 스크립트는 쉬 #!/bin/sh
로 작성하지만 떠들썩한 파티를 사용하고 ...
EDIT3을 : 나는 그것이 작동에 도착하지만 내가 왜 몰라! - 좋아, 내가 한 일은 호스트 이름 (sudo hostname abc
)을 내가 ssh에 넣은 컴퓨터의 이름으로 바꾼 것입니다 (예 : abc). PVM이 기계 abc.mycompany.local
의 전체 이름을 나열하기 전에. abc.mycompany.local
과 abc
은 모두 같은 시스템입니다.
아니요 작동하지 않습니다. 나는 진술 바로 뒤에 echo를하면 변수 내용을 볼 수 있지만 여전히 오류가 발생한다. ... ... bit. – MalteseUnderdog
나는 bash를 사용하고있다. 그러나 스크립트 shbang은 #!/bin/sh이다. 나는 [] 대신 [[]]로 바 꾸었으므로 나는 여전히 실수 오류를 낳는다. – MalteseUnderdog
@MalteseUnderdog : 변수 값이 아마도 무언가이다 ...'declare -p' 할 수 있니? 의심스러운 것이있을 수 있습니다. 작업 내보내기 GOLD_DIR = blabla를 할당으로 나눈 다음 내보낼 경우 변경됩니까? 또한 POSIXLY_CORRECT envvar와 같이 POSIX 모드로 시도하십시오. 조건을'[-z "$ GOLD_DIR"]'으로 변경하면 작동할까요? –