Shell 为什么可以';在cat | while循环中设置的t值是否在循环后读取?
我不熟悉shell脚本,我编写了一个脚本来标记Shell 为什么可以';在cat | while循环中设置的t值是否在循环后读取?,shell,scripting,Shell,Scripting,我不熟悉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 do
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
cat
是多余的,并且是问题的原因,因为“|”管道创建了子shell。这就是为什么退出while循环时,$b
的值“丢失”的原因。只需将文件重定向到while read循环
#!/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
#/bin/bash
而read-r行
做
count1=$(回显“$行”| wc-c)
a=37
如果[“$count1”-等式“$a”];然后
b=0
其他的
c=1
打破
fi
完成<“PLAYARTE_TXT.TXT”
如果[[“$b”=0&“$c”!=1];然后
呼应成功
其他的
回波故障
fi
出口0
非常感谢,但是如何指定文件的读取位置?您的意思是什么?文件被重定向。再次查看我的代码。否则,如果要将文件名传递给脚本,可以使用$1
(或$@
)