shell 变量不保值
shell variable not keeping value
我在文件 /root/backuplist.txt
中有 3 行。
第一个echo
打印完美,但最后一个打印空行;我不确定为什么。不知何故,$DIRS
值正在取消设置。
#!/bin/bash
cat /root/backuplist.txt |
while read line
do
DIRS+="$line "
echo $DIRS
done
echo $DIRS
问题是这里使用了管道,它是 为您的 while
循环分叉一个子 shell,因此更改为 DIRS
在父 shell 中不可见的子 shell 中正在生成。此外 cat
在这里是不必要的。
这样说:
#!/bin/bash
while read -r line
do
DIRS+="$line "
echo "$DIRS"
done < /root/backuplist.txt
echo "$DIRS"
我在文件 /root/backuplist.txt
中有 3 行。
第一个echo
打印完美,但最后一个打印空行;我不确定为什么。不知何故,$DIRS
值正在取消设置。
#!/bin/bash
cat /root/backuplist.txt |
while read line
do
DIRS+="$line "
echo $DIRS
done
echo $DIRS
问题是这里使用了管道,它是 为您的 while
循环分叉一个子 shell,因此更改为 DIRS
在父 shell 中不可见的子 shell 中正在生成。此外 cat
在这里是不必要的。
这样说:
#!/bin/bash
while read -r line
do
DIRS+="$line "
echo "$DIRS"
done < /root/backuplist.txt
echo "$DIRS"