나는 두 개의 스크립트를 작성했습니다. 하나는 몇 가지 설명과 함께 다른 스크립트의 간단한 코드를 포함합니다.
사용자: 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
이것이 CAPS
Bash에서 변수 이름을 사용하는 것이정말 나쁜 생각이야.
snake_case
또는 를 사용하면 CamelCase
환경 변수가 변경되지 않습니다 PATH
.
그러므로:
path=/app/oracle/admin/DB/$1
괜찮아요
PATH=/app/oracle/admin/DB/$1
아니요.
달리기
( set -o posix ; set )
변수가 몇 개인지 확인하기 위해 실수로 변수를 덮어썼을 수도 있습니다 CAPS
. 추적하려고 하기보다는 일반적인 규칙으로 생각하세요.아니요사용 CAPS
.