Как вы идете в оболочке Mac (как в Windows .bat)? - PullRequest
1 голос
/ 30 декабря 2011

Эквивалент .bat:

:one
<<run program>>
goto :two

:two
<<run program>>
goto :one

end

Может ли .sh сделать это?

Ответы [ 3 ]

2 голосов
/ 30 декабря 2011

Там нет точной замены.В bash программировании вы можете определять функции, поэтому вы можете сделать что-то вроде

one() {
    # Some stuff
    two
}

two() {
    # Some more stuff
    one
}

Хотя в конечном итоге это исчерпает пространство стека;надеюсь, есть некоторые обстоятельства, при которых вы включите код, чтобы остановить рекурсию.Я понимаю, что это всего лишь пример соломенного человека, но bash позволит вам использовать другие формы циклов, которые будут работать лучше;например:

while true
do
    # Some stuff
    # Some more stuff
done
0 голосов
/ 30 декабря 2011

Все, что вы пытаетесь выполнить с помощью оператора goto, вероятно, может быть выражено без него в bash, в частности, путем написания функций или использования бесконечного цикла while (с возможностью выхода из него).Кстати, псевдокод, который вы написали, в конечном итоге потерпит крах, если у вас не указано какое-либо условие выхода, указанное в одном или двух

0 голосов
/ 30 декабря 2011

Оболочка Unix позволяет структурировать программирование, поэтому нет необходимости в goto.

while true; do
    <<some things here>>
    <<more things here>>
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...