循环套循环的问题.
时间:2011-07-29
来源:互联网
用什么命令 能直接退出啊。不继续执行程序了
作者: xiaoying1599 发布时间: 2011-07-29
shell perl都是这样的啊
[root@test ~]# cat test.sh
#!/bin/bash
for i in $(seq 1 10)
do
for y in $(seq 1 10)
do
for z in $(seq 1 10)
do
echo $i$y$z
exit 1
done
done
done
[root@test ~]# ./test.sh
111
作者: steptodream 发布时间: 2011-07-29
exit 1应该是shell语法吧
作者: thefirstz 发布时间: 2011-07-29
exit应该会直接退出整个程序的
作者: justkk 发布时间: 2011-07-29
#!/usr/bin/perl
for($i=0;$i<10;$i++){
for($j=0;$j<10;$j++){
for($z=0;$z<10;$z++){
print "$i-$j-$z\n";
exit 1;
}
}
}
[root@test ~]# ./test.pl
0-0-0
作者: steptodream 发布时间: 2011-07-29
while [ $i -lt ${#RLS_DIR_LST[*]} ]; do
echo ${RLS_DIR_LST[$i]} | while read RLS_SRC_SVTYPE RLS_SRC_DIR RLS_TO_DIR RLS_FILE_TYPE RLS_USER RLS_GROUP RLS_PERMISSION
do
LENV_RL_LISTFILE=`ls -l ${WORK_AREA_PATH}/${RLS_SRC_DIR} | grep "^-" | awk '{print "'${WORK_AREA_PATH}${RLS_SRC_DIR}'/" $9}'`
#check release directory exist
if [ ! -d "${RLS_TO_DIR}" ]; then
/bin/echo "`/bin/date +'%Y/%m/%d %H:%M:%S'` release directory ${RLS_TO_DIR} is not exist" >> ${LOGFILE}
/bin/echo "ERROR" > ${TRGFILE}
error_exit ${LOGFILE} "${MYNAMEEN}"
fi
#check permisstion of release directory
if [ ! -w "${RLS_TO_DIR}" ]; then
/bin/echo "`/bin/date +'%Y/%m/%d %H:%M:%S'` release directory ${RLS_TO_DIR} is not be write" >> ${LOGFILE}
/bin/echo "ERROR" > ${TRGFILE}
exit 1
fi
echo ${RLS_TO_DIR}
done
let i++
#loop end
作者: xiaoying1599 发布时间: 2011-07-29
if [ ! -d "${RLS_TO_DIR}" ]; then
/bin/echo "`/bin/date +'%Y/%m/%d %H:%M:%S'` release directory ${RLS_TO_DIR} is not exist" >> ${LOGFILE}
/bin/echo "ERROR" > ${TRGFILE}
error_exit ${LOGFILE} "${MYNAMEEN}"
fi
正常这个地方 判断出错 就应该 error_exit ${LOGFILE} "${MYNAMEEN}" 这个是公共方法.就是exit
但是 他还继续 循环 判断下一个 ${RLS_TO_DIR}
作者: xiaoying1599 发布时间: 2011-07-29
不过我很怀疑你是否执行到了exit
是否可以在exit前增加一条打印信息
作者: q191201771 发布时间: 2011-07-29
虽然我还没学到shell
不过我很怀疑你是否执行到了exit
是否可以在exit前增加一条打印信息
执行到了.退出了当前的循环 开始了一下次 循环......
作者: xiaoying1599 发布时间: 2011-07-29
引用 7 楼 q191201771 的回复:
虽然我还没学到shell
不过我很怀疑你是否执行到了exit
是否可以在exit前增加一条打印信息
执行到了.退出了当前的循环 开始了一下次 循环......
我知道你的错误了!!!
你的循环结构是
while do
echo "xxxx" | wihle do
exit 1
done
done
看到了吗 你的第二层循环是在管道里 所以你的exit 1仅仅是在一个管道里执行了
当然不会退出整个程序!!
作者: steptodream 发布时间: 2011-07-29
#!/bin/bash
echo "hello" | exit 1
echo "going on...haha"
这里的exit 1是在管道里 是不会退出程序的 还会输出going on...haha
作者: steptodream 发布时间: 2011-07-29
do
你这个循环就是为了读取参数吧 实际就运行了一次吧 不要这层循环 比如改成这样的简单结构
RLS_SRC_SVTYPE=$(echo ${RLS_DIR_LST[$i]} | awk '{print $1}')
RLS_SRC_DIR=$(echo ${RLS_DIR_LST[$i]} | awk '{print $2}')
RLS_TO_DIR=$(echo ${RLS_DIR_LST[$i]} | awk '{print $3}')
RLS_FILE_TYPE=$(echo ${RLS_DIR_LST[$i]} | awk '{print $4}')
RLS_USER=$(echo ${RLS_DIR_LST[$i]} | awk '{print $5}')
RLS_GROUP=$(echo ${RLS_DIR_LST[$i]} | awk '{print $6}')
RLS_PERMISSION=$(echo ${RLS_DIR_LST[$i]} | awk '{print $7}')
作者: steptodream 发布时间: 2011-07-29
作者: lgxwqq111 发布时间: 2011-07-29
echo ${RLS_DIR_LST[$i]} | while read RLS_SRC_SVTYPE RLS_SRC_DIR RLS_TO_DIR RLS_FILE_TYPE RLS_USER RLS_GROUP RLS_PERMISSION
do
你这个循环就是为了读取参数吧 实际就运行了一次吧 不要这层循环 比如改成这样的简单结构
RLS_SRC_SVTYPE=$(echo……
难不成 只有这个方法了嘛...
作者: xiaoying1599 发布时间: 2011-07-29
难不成 只有这个方法了嘛...
代码简单有什么不好 老用管道本身就不好。
肯定不只这一种方法 我只是给个例子 你可以自己想办法啊
作者: steptodream 发布时间: 2011-07-29
引用 13 楼 xiaoying1599 的回复:
难不成 只有这个方法了嘛...
代码简单有什么不好 老用管道本身就不好。
肯定不只这一种方法 我只是给个例子 你可以自己想办法啊
嗯..谢谢老师指点~
作者: xiaoying1599 发布时间: 2011-07-29
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28