Справка цикла while в Shell Script [закрыто]

Я новичок в написании сценариев оболочки, поэтому мне любопытно использовать «Пока петли» в форме сценария оболочки.

Я знаю, как объявить переменную и использовать цикл while в java

int num = 0;
while(num <= 10)
{
    System.out.println(num)
    num = num + 1
}

Но я не знаю, как объявлять переменные и использовать их в цикле while в Shell Script.

1
задан 18.04.2020, 18:46

3 ответа

Вы будете гораздо счастливее, если вместо этого использовать цикл for (в соответствии с вашим примером)

for i in {0..10}; do
    echo "$i"
done

Если вы должны использовать цикл while, рассмотрите следующее

i=0
while [[ $i -le 10 ]]; do
    echo "$i"
    i=$((i+=1))
done
1
ответ дан 18.04.2020, 18:47

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

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

Более «shell-ish» способ добиться того же самого будет ]

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

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

3
ответ дан 18.04.2020, 18:46
  • 1
    @user1984712 Вы получили " управляйте не found" потому что Вы добавили пространство между num и эти = знак. – sam 18.04.2020, 18:46
  • 2
    Нет, в ударе мы сделали бы это: printf '%s\n' {0..9}. – Robert 18.04.2020, 18:47
  • 3
    Я использовал этот пример, и я получил ошибку. " строка 4: цифра: команда, не найденная. – Market Queue 18.04.2020, 18:47
  • 4
    О, я должен добавить, когда я выполняю fileName.sh файл, я использую удар fileName.sh. Моя первая строка файла является #!/bin/sh. I' m не уверенный, если какое-либо из этого имеет значение – destroy-everything 18.04.2020, 18:48
  • 5
    @gniourf_gniourf, Который на самом деле выглядит лучше, чем эхо, I' ll добавляют его. – Philippe 18.04.2020, 18:48

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

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

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

0
ответ дан 18.04.2020, 18:47

Теги

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