Попробуйте / За исключением цикла в оболочке [дубликат]

{/* Make sure that `location` is injected into this component */}
<ul className="nav navbar-nav">
  <li className={location.pathname === '/' && 'active'}>
    <Link to='/'>
      Home page
    </Link>
  </li>
  <li className={location.pathname.startsWith('/about') && 'active'}>
    <Link to='/about'>
      About us
    </Link>
  </li>
</ul>
157
задан J V 11 March 2011 в 15:41
поделиться

6 ответов

until passwd
do
  echo "Try again"
done
277
ответ дан tig 20 August 2018 в 12:11
поделиться
  • 1
    oneliner: until passwd; do echo "Try again"; done – tig 19 March 2012 в 14:10
  • 2
    Из-за этого сложно сделать Ctrl-C. – DonGar 11 February 2013 в 00:38
  • 3
    Легко для Ctrl-C из этого: until passwd; do echo "Try again"; sleep 2; done - все, что вам нужно сделать, это нажать Ctrl-C сразу после (в течение двух секунд) echo выполнил это задание. – Christian 23 August 2013 в 21:14
  • 4
    Ctrl-Z, за которым следует kill %1, работает здесь, когда Ctrl-C не будет – Tom 24 April 2014 в 18:36
  • 5
    @azmeuk: Попробуйте что-то вроде until passwd || (( count++ >= 5 )); do echo "foo"; done (только bash, обязательно установите count на 0, если этот varaible существует) Если вам это нужно для простого sh, увеличьте счетчик в теле и используйте [] – Justin Sane 5 August 2015 в 11:53
while [ -n $(passwd) ]; do
        echo "Try again";
done;
7
ответ дан Andrés Rivas 20 August 2018 в 12:11
поделиться
  • 1
    Это не способ сделать это ... вы отрицаете исходную инструкцию psswd, а затем выполняете унарный тест. @duckworthd - это хорошо. – Ray Foss 13 June 2018 в 18:20

Чтобы уточнить ответ @Marc B,

$ passwd
$ while [ $? -ne 0 ]; do !!; done

Хороший способ сделать то же самое, что не является специфичным для команды.

39
ответ дан duckworthd 20 August 2018 в 12:11
поделиться
  • 1
    Не работает для меня, к сожалению (я не получил команду «!!»). Как это должно работать? – Johannes Rudolph 10 September 2014 в 11:05
  • 2
    Это команда bash для запуска предыдущей команды. Например, если вы забудете написать sudo перед командой, вы можете просто сделать sudo !! для запуска предыдущей команды с правами root. – JohnEye 8 January 2015 в 14:34
  • 3
    могу ли я сделать скрипт в моем профиле, который может это сделать, поэтому я могу пойти: $ makelastwork – user230910 24 April 2016 в 13:42
  • 4
    Как спать между бегами? – Kamil Dziedzic 25 October 2017 в 17:04
  • 5
    Это очень полезно – webofmars 26 July 2018 в 14:17

Попробуйте функцию bash 'read'

echo -n "please confirm to continue (Y/n) "
                read yn
                case $yn in
                        do the rest ;)
                esac
-3
ответ дан Gekkie 20 August 2018 в 12:11
поделиться
  • 1
    Это не изменяет пароль пользователя ... – Marc B 11 March 2011 в 15:44
  • 2
    он не просил сменить пароль, но ждать ввода пользователя;), и поэтому я бы попросил пароль и внутренне передать это, чтобы передать пароль – Gekkie 11 March 2011 в 15:46

вы можете использовать цикл бесконечности

while true
do
  read -p "Enter password" passwd
  case "$passwd" in
    <some good condition> ) break;;
  esac
done
2
ответ дан kurumi 20 August 2018 в 12:11
поделиться
  • 1
    Это единственный ответ, который не требовал ввода моей многострочной команды в функцию. Я сделал && break после моей команды проверки, но вместо случая выбора. – carlin.scott 27 April 2018 в 21:19

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

passwd
while [ $? -ne 0 ]; do
    passwd
done

С вашей версией backtick вы сравнивая вывод passwd, который будет выглядеть как Enter password и confirm password и т. п.

66
ответ дан Marc B 20 August 2018 в 12:11
поделиться
  • 1
    Разве это не должно быть $?? – Shawn Chin 11 March 2011 в 15:49
  • 2
    Упс. правильно. Хороший улов. благодаря! Я отредактирую ответ – Marc B 11 March 2011 в 15:49
  • 3
    Приятно, но ответ «Эрик» чист, спасибо! – J V 11 March 2011 в 15:52
  • 4
    Мне это нравится, потому что ясно, как адаптировать его к противоположной ситуации. например запускать программу с неопределенной ошибкой, пока она не сработает – Eric 16 May 2014 в 00:54
  • 5
    Когда успех обозначается ненулевым кодом выхода, это то, что вам нужно. – Gudlaugur Egilsson 30 January 2017 в 15:19
Другие вопросы по тегам:

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