2015-01-25 8 views
1

실행중인 프로세스의 데이터를 조회하고 싶습니다. 실제로 해당 작업 ID에 대한 스크래치 디렉토리를 찾고 있습니다. 나는 다음과 같은 명령을 수동으로 그렇게 관리 (작업-ID를 가정 12345) : 스크래치 디렉토리에 기록됩니다csh 스크립트에서 작업 디렉토리를 변경하십시오.

/home/username/somefolder/12345.out 

:

find ~ -name '12345.out' 

는이 작업에 따라 출력 파일을 찾습니다 해당 폴더의 .scrdir라는 파일이므로

cd | cat /home/username/somefolder/.scrdir 

내가 원하는 곳으로 데려옵니다. 지금 원하는

의 .cshrc에 CSH 스크립트 또는 일부 별칭에 그 결합. 지금까지


내 atempt :

#/bin/csh 

set jobfile = `find ~ -name $argv[1].out` 
set jobdir = `dirname $jobfile` 
set scrdir = `cat $jobdir/.scrdir` 
echo $scrdir 

첫 번째 인수 값이 작업-ID이며, 12345 예를 들면, 이 스크립트는 올바른 스크래치 디렉토리를 인쇄하지만 스크립트를 호출 한 후 실제 작업 디렉토리를 스크래치 디렉토리로 변경하려고합니다. csh 스크립트에서 작업 디렉토리를 변경하려면 어떻게해야합니까?


/title에 대한 질문을 수정하는 데 도움이되는 정보에 감사드립니다.

+0

그것은 정확하게 당신이 원하는 것을 나에게 entirly 분명하지 않다, 또는 정확히 문제입니다. 나는 당신이 이미 (비 작동) 시도를했다고 생각하니? 아마도이 질문을이 질문에 추가해야합니다. 아마도 문제가 어디에 있는지 명확하게 알 수 있기 때문입니다. – Carpetsmoker

+0

'pushd'와'popd'로 디렉토리를 변경하려고했으나 스크립트가 끝나면 디렉토리 스택이 재설정됩니다. (분명히 각 서브 쉘은 자신의 디렉토리 스택을 가져옵니다.) – tmartin

답변

1

csh에 셸 함수가 없기 때문에 내가 찾은 유일한 해결책은 source으로 스크립트를 호출하는 것입니다.

스크립트 :

#/bin/csh 

set jobfile = `find ~ -name $argv[1].out` 
set jobdir = `dirname $jobfile` 
set scrdir = `cat $jobdir/.scrdir` 
cd $scrdir 

이 스크립트를 호출하려면 다음

source myscript.sh