February 16, 2018
Shell: Shell中while循环的陷阱, 变量实效, 无法赋值变量

在写while循环的时候,发现了一个问题,在while循环内部对变量赋值、定义变量、数组定义等等环境,在循环外面失效。
一个简单的测试脚本如下:
#!/bin/bash
echo "abc xyz" | while read line
do
new_var=$line
done
echo new_var is null: $new_var?
执行结果证明,$new_var的结果是空值。在google上查了查,才发现问题出在管道上。加上自己的总结,特分享两个使用while循环时的陷阱。
先看看下面的内容。
while循环的写法有好几种,它的语法结构为:
while test_cmd_list; do cmd_list; done
但更… Read More