if-thenステートメントを使用するBash関数の予期しないマーカー "}"の近くに構文エラーがあります。

if-thenステートメントを使用するBash関数の予期しないマーカー

次のスクリプトをファイルに保存し、aliasユーザーのファイルにスクリプトを作成してbashrcファイルをインポートしますbashrc

#!/bin/bash
domain="$1" && test -z "$domain" && exit 2

environment() {
    read -sp "Please enter the app DB root password:" dbrootp_1 && echo
    read -sp "Please enter the app DB root password again:" dbrootp_2 && echo
    if [ "$dbrootp_1" != "$dbrootp_2" ]; then echo "Values unmatched. Please try again." && exit 2 fi

    read -sp "Please enter the app DB user password:" dbuserp_1 && echo
    read -sp "Please enter the app DB user password again:" dbuserp_2 && echo
    if [ "$dbuserp_1" != "$dbuserp_2" ]; then echo "Values unmatched. Please try again." && exit 2 fi
}
environment

実行すると、alias domain次の結果が表示されます。

+ /user/nwsm/nwsm.sh x
/user/nwsm/nwsm.sh: line 12: syntax error near unexpected token `}'
user/nwsm/nwsm.sh: line 12: `}'

構文エラーが発生するのはなぜですか?構文エラーが見つかりませんでした。あなた?たぶん別の問題があるかもしれません。

Nano(またはVisual Studio Code)にエイリアン文字は表示されません。

ここに画像の説明を入力してください

ベストアンサー1

(ドアの終わり);の前に2つのセミコロン()が欠けているようです。fiif

以下は正しいif-thenステートメントです。

if [ "$dbrootp_1" != "$dbrootp_2" ]; then echo "Values unmatched. Please try again." && exit 2; fi
if [ "$dbrootp_1" != "$dbrootp_2" ]; then echo "Values unmatched. Please try again." && exit 2; fi

fi各行の終わりに前のセミコロンを確認してください。

stderrのBashエラーが次の場合「6行と10行にはセミコロンが必要です。」、質問や回答を投稿できない場合があります。

JavaScriptでBash if-thenステートメントを書くのは、思ったよりも少し冗長なようです。

おすすめ記事