Длина строки с помощью сценария оболочки [закрыто]

Установите kde с необходимыми зависимостями, затем используйте rvm Ruby Version Manager для установки версии 2.3.1:

rvm install ruby-2.3.1

установите его по умолчанию:

rvm --default use 2.3.1

1
19.08.2017, 01:19
3 ответа

Удалите последнюю запятую после завершения построения строки.

for …
done
step=${step%,}
regions_uspos=${regions_uspos%,}

${ ПЕРЕМЕННАЯ% ШАБЛОН}расширяется до значенияПЕРЕМЕННАЯс кратчайшим суффиксом, соответствующимШАБЛОН}удален. Эта конструкция поддерживается во всех оболочках POSIX. Он также поддерживается во всех конфигурациях BusyBox.

Если вам нужны промежуточные строки без запятой в конце, вы можете удалить запятую внутри цикла. В качестве альтернативы создайте строки без запятой в конце, добавив запятую перед добавленным элементом. Чтобы избежать начальной запятой, определите первую итерацию в цикле.

first=1
for … do
  if [ -n "$first" ]; then
    first=
  else
    step="$step,"
    regions_uspos="$regions_uspos,"
  fi
  step="$step$i"
  …
done
0
28.01.2020, 00:49

Да, очевидно, ответ был следующим:

for i in $var
do 
 step=$step"region_$i,"
done

step=${step%,}
echo $step
regions_uspos=${regions_uspos%,}

и он был основан на ответе @Gilles

0
28.01.2020, 00:49

Много способов сделать это. Один из способов - создать новую переменную, например. sep, который изначально пуст и устанавливается в запятую сразу после того, как вы говорите step="$step$sep$i".

Другой способ — использовать условное расширение, так что вы говорите

step="${step+${step},}$i"

Где ${имя+значение} расширяется до значения, если установлено имя. В данном случае значением является «$step», если я правильно набираю это на телефоне.

Другой способ — просто удалить первую запятую из переменной после того, как вы накопили в ней значения.

0
28.01.2020, 00:49

Теги

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