1

file に 3 行あります/root/backuplist.txt

最初のechoものは完全に印刷されますが、最後のものは空行を印刷します。理由はわかりません。どういうわけか、$DIRS値が設定されていません。

#!/bin/bash

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

echo $DIRS
4

1 に答える 1

3

問題は、ここでパイプを使用することです。これは、ループのサブシェルをフォークしているため、親シェルでは表示されない子シェルで変更が行われています。ここは別に不要です。whileDIRScat

このようにしてください:

#!/bin/bash

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

echo "$DIRS"
于 2015-03-07T14:32:24.777 に答える