我是shell脚本的新手,我编写了一个脚本来标记while
循环中的值,但如果我尝试在循环后访问这些值,则返回空值。为什么呢?
#!/bin/sh
cat PLAYARTE_TXT.txt|while read line
do
count1=$(echo $line|wc -c)
a=37
if [[ $count1 -eq $a ]];
then
b=0
else
c=1
break
fi
done
if [ "$b" -eq "0" -a "$c" -ne "1" ];
then
echo success
else
echo failure
fi
exit 0
答案 0 :(得分:2)
cat
是多余的,是您问题的原因,因为“|” pipe创建一个子shell。这就是为什么当你离开while循环时,$b
的值“丢失”。只需将文件重定向到读取循环
#!/bin/bash
while read -r line
do
count1=$(echo "$line"|wc -c)
a=37
if [ "$count1" -eq "$a" ];then
b=0
else
c=1
break
fi
done < "PLAYARTE_TXT.txt"
if [[ "$b" = 0 && "$c" != 1 ]];then
echo success
else
echo failure
fi
exit 0