【问题标题】:shell variable not keeping value [duplicate]shell变量不保持值[重复]
【发布时间】:2015-03-08 01:43:49
【问题描述】:

我在文件 /root/backuplist.txt 中有 3 行。

第一个echo 打印完美,但最后一个打印空行;我不确定为什么。不知何故,$DIRS 的值正在取消设置。

#!/bin/bash

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

echo $DIRS

【问题讨论】:

  • 您是否尝试过在脚本的最顶部(cat 之前)声明 DIRS
  • 是的。如果我这样做, DIRS="hi" 然后最后一个 echo 命令只打印 "hi"

标签: bash shell unix pipeline subshell


【解决方案1】:

问题是这里使用了管道,它为您的while 循环分叉一个子shell,因此在子shell 中对DIRS 进行了更改,而这些更改在子shell 中不可见父壳。另外cat这里就不用了。

这样吧:

#!/bin/bash

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

echo "$DIRS"

【讨论】:

  • 太棒了!效果很好!
猜你喜欢
  • 2020-03-25
  • 2011-08-24
  • 2015-08-09
  • 1970-01-01
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-14
相关资源
最近更新 更多