Хотя помощь цикла в Shell Script [закрыта]

Попробуйте отключить опции «Записать активность» в настройках «Конфиденциальность».

1
задан 28 October 2013 в 08:50

3 ответа

Существуют различные способы сделать это, но сценарий оболочки, который наиболее точно отражает ваш пример Java, таков:

num=0
while test $num -le 10; do
    echo $num
    num=$((num+1))
done

. Более «shell-ish» способ достичь того же будет [ ! d1]

printf '%s\n' {0..9}

Но обратите внимание, что конструкция {0..9} является «башизмом», который не будет работать в стандартной (POSIX) оболочке.

3
ответ дан 24 May 2018 в 16:07
  • 1
    Я использовал этот пример, и у меня появилась ошибка. «строка 4: num: команда не найдена. – Schmidty15 28 October 2013 в 02:35
  • 2
    О, я должен добавить, когда я запускаю файл fileName.sh, я использую bash fileName.sh. Моя первая строка файла: #! / Bin / sh. Я не уверен, что это имеет значение – Schmidty15 28 October 2013 в 02:39
  • 3
    @ user1984712 Вы получили команду «не найден» " потому что вы добавили пробел между знаками num и =. – zwets 28 October 2013 в 02:45
  • 4
    Нет, в bash мы бы это сделали: printf '%s\n' {0..9}. – gniourf_gniourf 28 October 2013 в 02:46
  • 5
    @gniourf_gniourf На самом деле это выглядит лучше, чем эхо, я добавлю его. – zwets 28 October 2013 в 02:50

Еще один простой способ:

num=0
while (($num <= 10)); do
    echo "$num"
    ((num++))
done

Это будет работать в bash, но не в стандартной оболочке POSIX.

0
ответ дан 24 May 2018 в 16:07

Этот сайт Bash Scripting должен помочь вам, обычно вам не нужно объявлять переменные перед их использованием:

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO- 7.html

-2
ответ дан 24 May 2018 в 16:07
  • 1
    О, дорогой, пожалуйста, не связывайтесь с такими ужасными документами! Этот документ действительно показывает , что вы не должны делать , а не показывать хорошие практики! – gniourf_gniourf 28 October 2013 в 02:44
  • 2
    Что с этим не так? Я просто хотел сказать, что это сработало – Schmidty15 28 October 2013 в 02:45
  • 3
    @ user1984712 Что случилось? Разбор вывода ls, отсутствие кавычек, устаревший стиль C-loop, использование имен капитализированных переменных, использование let вместо арифметики bash, использование [] вместо [[...]] или арифметики bash, .. пожалуйста, просто не читайте этот документ, если вы не хотите писать дрянной код и не учиться правильному bash. – gniourf_gniourf 28 October 2013 в 02:50
  • 4
    @gniourf_gniourf, если это так плохо, вы должны понизить его. – Braiam 28 October 2013 в 08:52
  • 5
    Hm, который не обновлялся с 2000 года. Лучше ли tldp.org/LDP/abs/html ? – LiveWireBT 28 October 2013 в 13:03

Другие вопросы по тегам:

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