переменная оболочки не сохраняет значение

У меня есть 3 строки в файле /root/backuplist.txt.

Первый echo печатает отлично, а последний печатает пустую строку; Я не уверен, почему. Каким-то образом значение $DIRS сбрасывается.

#!/bin/bash

cat /root/backuplist.txt |
while read line
do
  DIRS+="$line "
  echo $DIRS
done

echo $DIRS

person user3375257    schedule 07.03.2015    source источник
comment
Вы пытались объявить DIRS в самом верху вашего скрипта (перед cat)?   -  person ForceBru    schedule 07.03.2015
comment
Да. Если я это сделаю, DIRS=hi, тогда последняя команда echo напечатает только привет   -  person user3375257    schedule 07.03.2015


Ответы (1)


Проблема заключается в использовании канала здесь, который разветвляет вложенную оболочку для вашего цикла while и, таким образом, изменения в DIRS вносятся в дочернюю оболочку, которые не видны в родительской оболочке. Кроме того, cat здесь не нужен.

Имейте это так:

#!/bin/bash

while read -r line
do
   DIRS+="$line "
   echo "$DIRS"
done < /root/backuplist.txt

echo "$DIRS"
person anubhava    schedule 07.03.2015
comment
Потрясающий! работает отлично! - person user3375257; 07.03.2015