Вопрос по bash – «While:» против «while true» [дубликат]

86

This question already has an answer here:

What is the purpose of the : (colon) GNU Bash builtin? 11 answers

Когда вы смотрите на то, как должны быть реализованы бесконечные циклы, вы в основном видите этот подход:

while :
do
  # loop infinitely
done

Но я просто не понимаю использование: Вот. Не лучше ли использовать:

while true
do
  # loop infinitely
done

?

После толстой кишки не требуетсяtrue, как: это команда, а не синтаксис. chepner

Ваш Ответ

2   ответа
61

из руководства:

: [arguments] No effect; the command does nothing beyond expanding arguments and performing any specified redirections. A zero exit code is returned.

Поскольку это всегда возвращает ноль, следовательно, это похоже на использование в качествеtrue

Проверьте этот ответ:Какова цель `: & apos; (двоеточие) GNU Bash Builtin?

21

Толстая кишкавстроенная команда это ничего не делает, но возвращает 0 (успех). Таким образом, это короче (и быстрее), чем вызов фактической команды, чтобы сделать то же самое.

Error: User Rate Limit Exceeded:Error: User Rate Limit Exceededwhile $(echo true) ...Error: User Rate Limit Exceededwhile /bin/trueError: User Rate Limit Exceeded/bin/trueError: User Rate Limit Exceeded
Error: User Rate Limit Exceededwhile trueError: User Rate Limit Exceededwhile 1Error: User Rate Limit Exceeded1Error: User Rate Limit Exceededcd -Error: User Rate Limit Exceeded~Error: User Rate Limit Exceeded:Error: User Rate Limit Exceeded:Error: User Rate Limit Exceededwhile :; do ...; doneError: User Rate Limit Exceededwhile :\n do ...\n doneError: User Rate Limit Exceeded
Error: User Rate Limit Exceededi=0; time while true; do ((i++>100000)) && break; doneError: User Rate Limit Exceeded
Error: User Rate Limit Exceededwhile : some gibberishError: User Rate Limit Exceeded:Error: User Rate Limit ExceededtrueError: User Rate Limit Exceededwhile /bin/trueError: User Rate Limit Exceeded

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