関数を含むスクリプト:

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が空であることが1つの理由です。
  • ありますifステートメントの2番目のtestの構文エラー。 [ "$argument" == "-automatic" ]; thenである必要があります。報告されたエラーに関連している場合と関連していない場合があります。
  • @muru:その通りでした。 $INSTALL_LOG_OUTPUTのファイル名の割り当ては3行後です-.-

回答

次のように、関数のINSTALL_LOG_OUTPUTを引用符で囲みます。

function install_log() { echo "$1" >> "$INSTALL_LOG_OUTPUT" 2>&1 } 

スクリプトを再度実行すると、エラーメッセージが表示される可能性があります。 INSTALL_LOG_OUTPUTが空で、次のようなメッセージが表示されます:bash: : No such file or directory

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です