BASHは入れ子になったドア/ループ/関数を残そうとします。

BASHは入れ子になったドア/ループ/関数を残そうとします。

bashを使って大学で初めてスクリプトを書く方法を学んでいますが、入れ子になった文/ループ/関数に問題があります。

変数の値がtrueの場合、そのifステートメントで中断/返され、関数の一部である埋め込みwhileループでも中断され、終了するifステートメントを作成しようとします。 if文の変数はtrueです。)

私はreturn N、break N、そして終了を試みました。 (これはスクリプトが終了したことを知っています。)以下は、スクリプトを設定しようとした方法の例です。

#!/bin/bash

function1()
{
    while read -p "Enter a value: " input
    do
        if [ $input="X" ]
        then
            return 2
        fi
        # Rest of while statement
    done
    # End of while loop.
}
# End of function.

function1
# Call function1.
# Rest of script

これがどのように機能するかを理解できる人はいますか? (この質問の衝撃的な形式についてお詫び申し上げます。私はこのサイトに初めてアクセスし、実際に座ってそれがどのように機能するかを調べるのに時間がかかりませんでした。申し訳ありません。)

ベストアンサー1

これがあなたが望むものです:

#!/bin/bash

function1() {

    while read -p "Enter a value: " input; do

        if [ $input = "X" ]; then
            return 2
        fi

    # Rest of while statement
    done
    # End of while loop.
}
# End of function.

function1 # Call function1. # Rest of script

「=」の前後にスペースを追加し、条件として単純な[]を使用するのと同じくらい簡単です。

おすすめ記事