【发布时间】:2013-08-21 14:10:53
【问题描述】:
我想知道为什么即使有明确的退出命令,这个脚本也会继续运行。
我有两个文件:
file1.txt,内容如下:
啊啊啊 bbbbbb cccccc dddddd 啊啊啊 ffffff 呸呸呸
file2.txt,内容如下:
脚本 (test.sh) 是这样的,两个嵌套循环检查第一个文件的任何行是否包含第二个文件的任何行。如果找到匹配项,则中止。
#!/bin/bash
path=`dirname $0`
cat $path/file1.txt | while read line
do
echo $line
cat $RUTA/file2.txt | while read another
do
if [ ! -z "`echo $line | grep -i $another`" ]; then
echo "!!!!!!!!!!"
exit 0
fi
done
done
即使在打印第一个 !!!!!!!!!! 后应该退出时,我也会得到以下输出:
啊啊啊 !!!!!!!!!!!! bbbbbb cccccc dddddd 啊啊啊 ffffff !!!!!!!!!!!! 呸呸呸
exit 不应该完全结束脚本的执行吗?
【问题讨论】:
-
我能想到的唯一原因是由于管道进入
while。管道将为while启动另一个子进程(shell),因此while中的exit退出该shell 并返回到原来的。
标签: bash exit nested-loops abort