好久不用shell了,今天碰到一个坑,发现exit后,shell脚本还会运行。 exit 如果用在管道中的话,他会退出当前管道,但当前脚本还会运行。因为他只是结束管道这个子进程。 所以我们还需要在加一句 [ $? -eq 99 ] || exit ...
常规做法 可以看到直接使用exit可以退出脚本,并且可以将错误码作为参数传递。下面我们将脚本做一点点改动。 存在的问题 在管道 中执行exit script函数,不会退出整个脚本 原因在于,exit只能退出它所在的Shell,而放在管道中执行的命令 函数都是在独立的Shell Sub Shell 中执行的,所以上面脚本的进程树是这个样子的: 自上往下,各个PID的含义如下表: PID 说明 . t ...
2017-03-17 15:27 0 34150 推荐指数:
好久不用shell了,今天碰到一个坑,发现exit后,shell脚本还会运行。 exit 如果用在管道中的话,他会退出当前管道,但当前脚本还会运行。因为他只是结束管道这个子进程。 所以我们还需要在加一句 [ $? -eq 99 ] || exit ...
shell中运行的每个命令都使用退出状态码(exit status)来告诉shell它完成了处理。 退出状态码是一个0-255之间的整数值,在命令运行结束后由命令传递给shell,你可以捕获这个值并在脚本中使用。 查看退出状态码 $?,保存上个命令的退出状态码 ...
Shell也使用 break 和 continue 来跳出循环。 break命令 下面的例子中,脚本进入死循环直至用户输入数字大于5,使用break跳出这个循环。 在嵌套循环中,break 命令后面还可以跟一个整数,表示跳出第几层循环。 下面是一个嵌套循环 ...
一,退出状态码 1,范围:0~255 2,查看退出状态码:必须在命令执行之后立即执行 ,显示的是脚本最后一条命令的退出状态码 若f返回值为0,则表示正常 有异常为正值 二,exit 脚本会以最后一个命令的退出状态码退出 ...
一、for循环 语法:for 变量名 in 条件; do …; done 案例1 #!/bin/bash sum=0 for i in `seq 1 100` do sum=$[ ...
一个新的需求,需要在shell脚本中退出当前登录用户 方式一 方式二 ...
部署sersync时,执行脚本无法退出 原因: sersync为后台任务,导致出现卡住情况; 解决办法: 重定向输出到/dev/null文件或者自定义的文件中 ...
在shell脚本中,比如有以下的代码: cd /root/test88 rm -rf backup 如果目录/root/test88不存在,脚本不会停止,依然会执行rm -rf backup这个命令 要让脚本停止执行: #!/bin/bash -e 或 set -e ...