매개변수에서 외부 파일을 포함할 때 파일을 찾을 수 없습니다. [세게 때리다]

매개변수에서 외부 파일을 포함할 때 파일을 찾을 수 없습니다. [세게 때리다]

내 bash 파일에 외부 파일을 포함하는 방법에 대해 뭔가 빠진 것 같습니다.

내 시나리오에는 다음 명령이 있습니다

sh exec.sh env_local.conf ebis_tag

오류가 표시됩니다

exec.sh: 30행: .: env_local.conf: 파일을 찾을 수 없습니다.

내 팔로워들주문 실행스크립트는 다음과 같습니다

#!/bin/bash

usage_exit() {
        echo "Usage: $0 [-b] env_file_path project_name" 1>&2
        exit 1
}

# default BANG_RUNNING="FALSE"
BANG_RUNNING="FALSE"

while getopts b OPT
do
  case $OPT in
    b) BANG_RUNNING="TRUE" ;;
    ¥?) usage_exit;
  esac
done

shift $(($OPTIND - 1))

if [ $# -ne 2 ]; then
  echo $#;
  usage_exit;
fi

# import env_file
# CORE_HOST
# REF_HOST
# ADMASTER_HOST
. $1

주문 실행그리고env_local.config같은 디렉토리에

[root@6d4f1e2363eb makedb]# ls -l
total 81
-rwxrwxrwx 1 1000 ftp  3381 Mar 14 09:03 admaster.sql
-rwxrwxrwx 1 1000 ftp  1675 Mar 29 03:02 ebisdata.sql
-rwxrwxrwx 1 1000 ftp 51278 Mar 29 02:16 ebis.sql
-rwxrwxrwx 1 1000 ftp    83 Mar 29 02:18 env_local.conf
-rwxrwxrwx 1 1000 ftp    93 Mar 14 09:03 env_stg.conf
-rwxrwxrwx 1 1000 ftp  7233 Mar 29 03:01 exec.sh
-rwxrwxrwx 1 1000 ftp  5854 Mar 14 09:03 README.md
-rwxrwxrwx 1 1000 ftp 10481 Mar 14 09:03 refdb.sql
drwxrwxrwx 1 1000 ftp     0 Mar 14 09:03 update
[root@6d4f1e2363eb makedb]#

내가 놓친 게 무엇입니까?

답변1

bash가 아닌 run script를 사용하고 있습니다 sh. ( sh아마도 bash실행될 때 sh다른 규칙에 따라 작동합니다.)

get file 을 사용할 때 절대 또는 상대 경로가 아니고 파일 이름만 있는 . something경우somethingPOSIX 쉘의 경우:

파일이 포함되지 않은 경우 <slash>쉘은 지정된 검색 경로를 사용하여 PATH파일이 포함된 디렉토리를 찾습니다. 그러나 일반 명령 검색과 달리 도트 유틸리티로 검색한 파일은 실행 가능하지 않아도 됩니다. 읽을 수 있는 파일이 없으면 비대화형 쉘이 중단됩니다. 대화형 쉘은 표준 오류에 진단 메시지를 기록해야 하지만 이 경우 구문 오류로 간주되어서는 안 됩니다.

Bash는 또한 현재 디렉터리에서 파일을 찾습니다. shebang을 사용하려면 bash, not 또는 do를 사용하여 스크립트를 실행하세요. 그렇지 않으면 파일 경로를 제공합니다.sh./exec.sh#!/bin/bash

sh exec.sh ./env_local.config ebis_tag

관련 정보