関数を含むスクリプト:
function install_log() { echo "$1" >> $INSTALL_LOG_OUTPUT 2>&1 }
この関数は正常に機能しています。ログファイルに何かを書き込む機能です。
スクリプトの特定のパラメーターを読み取るために、スクリプトに他のコマンドをいくつか追加しました。
AUTOMATIC_INSTALL= for argument in "$@" do install_log "-> parameter $argument" if [ "$argument" == "--automatic" ] || ["$argument" == "-automatic" ]; then AUTOMATIC_INSTALL=True fi done install_log "# AUTOMATIC_INSTALL: $AUTOMATIC_INSTALL"
ただし、新しい行では、不要なメッセージが表示されます:
$INSTALL_LOG_OUTPUT: ambiguous redirect
これは2行からのものであることがわかりました
install_log "-> parameter $argument" # ... install_log "# AUTOMATIC_INSTALL: $AUTOMATIC_INSTALL"
メッセージが発生している理由を誰かが知っていますか?
コメント
回答
次のように、関数のINSTALL_LOG_OUTPUTを引用符で囲みます。
function install_log() { echo "$1" >> "$INSTALL_LOG_OUTPUT" 2>&1 }
スクリプトを再度実行すると、エラーメッセージが表示される可能性があります。 INSTALL_LOG_OUTPUTが空で、次のようなメッセージが表示されます:bash: : No such file or directory
。
INSTALL_LOG_OUTPUT
が空であることが1つの理由です。if
ステートメントの2番目のtest
の構文エラー。[ "$argument" == "-automatic" ]; then
である必要があります。報告されたエラーに関連している場合と関連していない場合があります。$INSTALL_LOG_OUTPUT
のファイル名の割り当ては3行後です-.-