次の内容を含む単純なシェルスクリプトmyTest.shがあります。
#!/bin/sh
################### file begins########################
. ./backupConfig.p.properties
echo "success"
################### file ends########################
backupConfig.p.propertiesの内容は次のとおりです。
####################################### file starts ########################
# Prod database connection details
database_env="OXDB”
### <some comments> ####
softLocation=/opt/apps/ibm/
### <some comments> ####
tablesList="Tab1 Tab2 Tab3"
### <some comments> ####
####################################### file ends ########################
問題は、シェルスクリプトを実行しようとするたびに常にエラーが発生することです。
$ sh myTest.sh
./backupConfig.p.properties: line 11: Tab1: command not found
success
上下の行のコメントを削除しようとしましたが、この行に空白があることを確認しましたが、問題を解決するのに役立つものは何もありません。唯一の効果があったのは、現在位置から行を切り取り、下に3行を貼り付けただけでした。誰かがこのエラーが発生した理由と行位置の変更が機能する理由を説明するのに役立ちますか?
ベストアンサー1
問題は、Database_env行の末尾にある詐欺師の二重引用符であることがわかりました。シェルは開く二重引用符とそれに続く二重引用符を確認します。
酸化データベース」
その後、改行、追加のテキスト、最後にtablesList行で予想されるオープン引用符で「終了」します。
他の人の目でこれを見ることに加えて、このような将来のエラーのための有用なヒントは、Tab1
作成者がそれを変数として割り当てようとした場合、エラーメッセージの前のテキストに注意を払うことです。シェルはそれを実行するコマンドとして扱いました。