
私の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
場合something
POSIXシェルの場合:
ファイルが含まれていない場合、
<slash>
シェルは指定された検索パスを使用してPATH
ファイルを含むディレクトリを見つけます。ただし、通常のコマンド検索とは異なり、ドットユーティリティで検索したファイルは実行可能である必要はありません。読み取り可能なファイルがないと、非対話型シェルは中断されます。対話型シェルは標準エラーに診断メッセージを記録する必要がありますが、この場合は構文エラーと見なすべきではありません。
Bash は現在のディレクトリでファイルを探します。 shebangを使用するにはbash
、notまたはdoを使用してスクリプトを実行します。それ以外の場合はファイルパスを提供します。sh
./exec.sh
#!/bin/bash
sh exec.sh ./env_local.config ebis_tag