쉘 스크립트 디렉토리 경로에서 $1을 처리합니다.

쉘 스크립트 디렉토리 경로에서 $1을 처리합니다.

내 스크립트(bash)의 이 부분은 최근까지 완벽하게 작동했지만 $1을 사용하여 디렉터리 경로를 제공하면 파일을 찾을 수 없다는 오류가 발생합니다. 내가 아는 유일한 차이점은 rhel 7로 업그레이드한 후 작동이 멈췄다는 것입니다.

이것은 스크립트의 일부입니다.

MOUNTINST=/opt/mqm80_Inst1

$1/crtMQdir.ksh $MOUNTINST/bin 755 mqm
$1/crtMQdir.ksh $MOUNTINST/logs 755 mqm
$1/crtMQdir.ksh $MOUNTINST/java/lib/soap 755 mqm

올바른 디렉터리 경로에 있고 파일이 있는지 확인하세요.

   /var/mqm/trace/WMQUNX8000.02]
    $ ll *crt*
    -rwxr-xr-x. 1 mqm mqm 826 Apr 10  2014 crtMQdir.ksh

내가 얻는 오류는 다음과 같습니다.

./test5.sh: line 4: /crtMQdir.ksh: No such file or directory
./test5.sh: line 6: /crtMQdir.ksh: No such file or directory
./test5.sh: line 8: /crtMQdir.ksh: No such file or directory

내가 뭐 놓친 거 없니?

답변1

$1스크립트에 대한 첫 번째 인수 에서처럼 경로를 스크립트에 대한 인수로 전달해야 합니다 .

이는 경로와 스크립트 이름(예: 스크립트의 전체 경로)을 원하는 경우에 /path/to/crtMQdir.ksh필요합니다 $0.

ksh또한 스크립트에 실행 권한이 있는지 확인해야 합니다 .chmod +x /path/to/crtMQdir.ksh

현재 디렉터리에서 실행하려는 경우 다른 방법은 현재 스크립트를 간단히 바꾸는 것입니다 $1. $PWD스크립트와 동일한 디렉토리를 사용하려면 를 $(dirname $0)사용할 수도 있습니다 $1.

관련 정보