shell变量作用域

今天才遇到这个问题,无法修改最后变量的值。而且使用export也无法做到,所以目前唯一知道的办法就是将获取到的值写入到文件中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash

num=`tail -n1 1.txt`
sed -i '$d' 1.txt
echo $num
echo "------------------"

cat 1.txt | while read line
do
for i in 12 23 34 89 32 78 45 82 29 65 20 73
do
if [[ $line == $i ]];then
sed -i "/${i}/d" 1.txt
# 这里的num值可以修改
num=`expr $num - 1`
# 只能将其值写入到文件中,最后读取出来
# echo $num > 2.txt
fi
done
done

echo "--------------------"
# 但是最后的num值无法改变
echo $num >> 1.txt

# cat 2.txt >> 1.txt

1.txt

1
2
3
4
5
6
7
8
9
10
87
52
73
75
23
99
12
19
23
12345678