2011-12-19 10 views
-1

루트 디렉토리에있는 모든 ksh 스크립트를 검색하고 디렉토리 경로를 가져 와서 디렉토리가 생성되었는지/존재하는지 확인하고 싶습니다. 이것은 샘플 ksh 스크립트입니까? 이걸 도와주세요?쉘 프로그래밍 또는 SED/AWK

cd /home/edwprod/cormis/bin 
if [ -f /home/edwprod/cormis/bin/churn.txt ] 
then 
echo " data not loaded in the table" 
exit 0 
else 
cd /home/edwprod/edw/cfg 
echo "XFB process is about to start" 
/home/edwprod/edw/cfg/AUTOMATE_XFB_ADVISOR.ksh 
fi 
/osmf/mgmt/scheduler/edw/ROMEO/bin >cat EDWADVCHR.ksh 
if [ -f /home/edwprod/cormis/bin/churn.txt ] 
then 
     cd /home/edwprod/cormis/bin/ 
     rm -f churn.txt 
fi 
/home/edwprod/cormis/bin/edw_etl_adv_churn_error.ksh CO_POP_ADVSR_DSCN_CHURN_I P 
+2

당신의 질문은 말이되지 않습니다. 루트 디렉토리에있는 ksh 파일 목록이 있다면 물론 그 디렉토리가 존재합니다 - 그렇지 않으면 어떻게 파일이 존재할 수 있습니까? 시도해보고 더 잘 설명하십시오. 또한이 스크립트는 귀하의 질문과 어떤 관련이 있습니까? – Mat

+0

일부 디렉토리가 누락되었을 수 있습니다. 예를 들어,/home/edwprod/cormis/bin과 같이이 디렉토리가 생성되었지만/home/edwprod/cormis/log 또는/home/edwprod/edw/cfg를 생성하지 못했습니다. 이 스크립트를 실행할 때 나는 놓친 두 개의 디렉토리를 알게 될 것입니다. 내가 이해 했니? – AruM

답변

0

다음은 디렉토리 목록의 존재 여부를 테스트하는 예제 스크립트입니다.
누락 된 디렉토리의 이름을 인쇄하고 누락 된 디렉토리 중 하나가 누락 된 경우 0이 아닌 반환 코드로 종료합니다.

#! /bin/sh 
dirs_to_check="/home/edwprod/cormis/bin 
       /home/edwprod/cormis/log 
       /home/edwprod/edw/cfg" 

ok=1 
for dir in $dirs_to_check ; do 
    if [ ! -d $dir ] ; then 
     echo "Directory $dir does not exist" 
     ok=0 
    fi 
done 

if [ $ok -ne 1 ] ; then 
    exit 1 
fi 

원하는 경우이 스크립트를 수정하여 누락 된 디렉토리를 만들 수 있습니다.

하지만 실제로는 필요하지 않습니다. 당신은 당신이 가지고있는 것을 받아들이고 cd이 일했는지를 점검 할 수 있습니다 :

cd /some/path 
if [ $? -ne 0 ] ; then 
    # you failed to cd: either the directory doesn't exist, 
    # or you have permission issues 
fi