redhat/bash - 두 개의 동일한 스크립트, 하나는 "명령을 찾을 수 없음" 오류 발생

redhat/bash - 두 개의 동일한 스크립트, 하나는 "명령을 찾을 수 없음" 오류 발생

나는 두 개의 스크립트를 작성했습니다. 하나는 몇 가지 설명과 함께 다른 스크립트의 간단한 코드를 포함합니다.

사용자: oracle 이 두 파일은 oracle입니다. 두 파일 모두 실행 권한이 있습니다: chmod +x fpc.sh && chmod +x bpc.sh

유효한 스크립트: fpc.sh

#!/bin/bash
#
# author bla bla bla
#
ORACLE_SID=MyOracleSid
PATH=/app/oracle/admin/DB/$1
TARGHET="\/app\/oracle\/admin\/DB\/$1"
chmod -R 755 $PATH

find $PATH -type f -exec egrep 'ORACLE_SID' {} \; -print

작동하지 않는 스크립트: bpc.sh

#!/bin/bash
#
# author bla bla bla
#
ORACLE_SID=MyOracleSid
PATH=/app/oracle/admin/DB/$1
#
#TARGHET="\/app\/oracle\/admin\/DB\/$1"
#
#
#
#
#
#
#
#
#
#
#
#
#
#
chmod -R 755 $PATH

find $PATH -type f -exec egrep 'ORACLE_SID' {} \; -print

bpc.sh는 다음을 얻습니다:

chmod 명령을 찾을 수 없습니다. find 명령을 찾을 수 없습니다.

그게 어떻게 가능하지?

도와 주셔서 감사합니다,

답변1

이것이 CAPSBash에서 변수 이름을 사용하는 것이정말 나쁜 생각이야.

snake_case또는 를 사용하면 CamelCase환경 변수가 변경되지 않습니다 PATH.

그러므로:

path=/app/oracle/admin/DB/$1

괜찮아요

PATH=/app/oracle/admin/DB/$1

아니요.

달리기

( set -o posix ; set )

변수가 몇 개인지 확인하기 위해 실수로 변수를 덮어썼을 수도 있습니다 CAPS. 추적하려고 하기보다는 일반적인 규칙으로 생각하세요.아니요사용 CAPS.

관련 정보