为什么FILE_FOUND在这个bugger的末尾为0:
FILE_FOUND=0
touch /tmp/$$.txt
ls -1 /tmp/$$.* 2>/dev/null | while read item; do
FILE_FOUND=1
echo "FILE_FOUND = $FILE_FOUND"
done
echo "FILE_FOUND = $FILE_FOUND"
rm -f /tmp/$$.txt 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
?? !!
在Unix上,FILE_FOUND保持为1(应该如此),但在Linux(RedHat,Cygwin,..)上,它会跳回到0!
它是Linux shell功能,而不是bug吗?:)
请帮忙.
因为你输入while而导致的常见问题,因此在子shell中运行,而子shell无法将环境变量传递回其父级.我猜这个"unix"在这方面有所不同,因为你在那里运行一个不同的shell(ksh?)
可能不需要到while循环的管道.你能用这个成语吗?
for item in /tmp/$$.*; do
....
done
Run Code Online (Sandbox Code Playgroud)
如果你必须使用子shell,那么你将不得不做一些外部的过程,如:
touch /tmp/file_found
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
432 次 |
最近记录: |