Добавить переменную строку к себе

У меня есть переменная в цикле do. Я добавляю его содержимое в файл, но я хочу добавить его себе, чтобы использовать его для других вещей, таких как отправка почты.

Я попробовал variable+=$variable но она не сработала.

Я хочу иметь доступ к переменной за пределами do … done

2 Solutions collect form web for “Добавить переменную строку к себе”

Бьюсь об заклад, ваша петля является частью конвейера

 seq 5 | while read num; do x+=$num; done; echo $x # expect "12345", actually see "" 

В bash, когда вы строите конвейер, он порождает подоболочки для всех частей. Когда подоболочка выходит, любые измененные вами переменные также уничтожаются.

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

Этот пример повторяет var в одной и той же подоболочке:

 $ seq 5 | { while read num; do x+=$num; done; echo $x; } 12345 

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

 $ while read num; do x+=$num; done < <(seq 5) $ echo $x 12345 

Если это просто строки, вы можете добавить следующее:

пример

 $ somevar="a string" $ echo $somevar a string $ somevar="$somevar$somevar" $ echo $somevar a stringa string 

Loops

Вы можете использовать ту же технику в цикле for в Bash.

 $ a="0"; for i in $(seq 3); do a="$a$i"; echo "$i | $a"; done 1 | 01 2 | 012 3 | 0123 
  • Инициализация переменной с помощью эха
  • Как заполнять многие файлы конфигурации с одинаковыми значениями
  • Как я могу постоянно изменять переменные среды через терминал? (Ubuntu 16.04)
  • Хранить вывод netcat в переменную
  • Маркировка команды в качестве переменной для повторного использования внутри каналов или отдельных команд
  • Следует ли указывать переменные при выполнении?
  • Возможно ли сделать переменную внутри вложенной для петлевого локального
  • Сериализовать переменную оболочки в bash или zsh
  • Замените строку в файле на другую, где оба сохраняются в переменных
  • Назначение переменной в сценарии ksh
  • Трубы и переменные
  • Переменная Shell в теге <a href>
  • Linux и Unix - лучшая ОС в мире.