Оператор арифметического сравнения, использующий if внутри цикла for в Bash - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь запустить приведенную ниже логику в скрипте bash

  for i in {1..30}:
  do
  printf $i 
  if (( $i!=30 )); then
    printf ","
  fi
  done

После нескольких часов поиска в Google я обнаружил, что в условии if квадратные скобки [ ] используются для сравнения строк, а круглые скобки используются для арифметических операций (( )). Я также обнаружил, что -ne используется для строки, а != должен использоваться для арифметических операций.

Несмотря на все мои усилия, я не могу успешно запустить эту простую логику, где мне нужно 30 раз запустить цикл и распечатать вывод с запятыми, но пропустить запятую в последней итерации.

1 Ответ

0 голосов
/ 16 ноября 2018

Вы можете просто удалить двоеточие : после фигурных скобок в первой строке:

for i in {1..30}
do
  printf $i 
  if (( $i!=30 )); then
    printf ","
  fi
done

Это напечатает то, что вы хотите:

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...