BASH пытается выйти из вложенных операторов/циклов/функций

Я учусь использовать bash для написания своего первого сценария для колледжа, но у меня проблемы с вложенными операторами/циклами/функциями.

Я пытаюсь написать оператор if, в котором, если значение переменной истинно, он выходит/возвращается из этого оператора if, затем также выходит из содержащего цикла while, который также является частью функции, которую я хочу завершить (когда переменная оператора if истинна).

Я пробовал return N, break N и exit (теперь я знаю, что это просто завершает сценарий). Вот пример того, как я пытался настроить свой сценарий.

#!/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

Может ли кто-нибудь пролить свет на то, как это должно работать? (Прошу прощения за ужасное форматирование этого вопроса, я новичок на сайте и еще не успел сесть и потратить время, чтобы узнать, как это работает, извините)

0
09.12.2016, 02:57
2 ответа

Это то, что вам нужно:

#!/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

Это так просто, как поставить пробелы до и после "=" и использовать simple [] для условного выражения.

0
28.01.2020, 05:06
if [ $input="X" ]

Должно быть:

if [[ $input="X" ]]
-1
28.01.2020, 05:06

Теги

Похожие вопросы