Questions tagged «exit»


4
我可以以某种方式在已经运行的prog1中添加“ && prog2”吗?
大多数shell提供某些功能,&&并;以某种方式链接命令的执行。但是,如果命令已经在运行,我还能根据第一个命令的结果以某种方式添加另一个要执行的命令吗? 说我跑了 $ /bin/myprog some output... 但我真的很想/bin/myprog && /usr/bin/mycleanup。我无法杀死myprog并重新启动一切,因为会浪费太多时间。我可以Ctrl+ Z和fg/(bg如有必要)。这是否允许我链接另一个命令? 我对bash最为感兴趣,但是欢迎所有常见shell的答案!
87 bash  shell  process  exit 

4
进程终止时的默认退出代码?
当某个进程被可处理的信号(例如SIGINT或)杀死SIGTERM而不处理该信号时,该进程的退出代码是什么? 对于像这样的无法处理的信号SIGKILL呢? 据我所知,杀死一个SIGINT可能导致退出代码的进程130,但这会因内核或外壳实现而有所不同吗? $ cat myScript #!/bin/bash sleep 5 $ ./myScript <ctrl-c here> $ echo $? 130 我不确定如何测试其他信号... $ ./myScript & $ killall myScript $ echo $? 0 # duh, that's the exit code of killall $ killall -9 myScript $ echo $? 0 # same problem

4
为什么(退出1)不退出脚本?
我有一个脚本,当我想要它时不会退出。 具有相同错误的示例脚本是: #!/bin/bash function bla() { return 1 } bla || ( echo '1' ; exit 1 ) echo '2' 我假设看到输出: :~$ ./test.sh 1 :~$ 但我实际上看到了: :~$ ./test.sh 1 2 :~$ ()命令链是否以某种方式创建作用域?什么是exit退出了,如果不是脚本?


4
子进程是否与其父进程一起死亡,是否有任何UNIX变体?
我已经研究Linux内核行为已经有一段时间了,对我来说很清楚: 当一个进程死亡时,所有的子进程都将返回该init进程(PID 1),直到最终死亡。 但是,最近,一个比我更了解内核的人告诉我: 当进程退出时,它的所有子进程也会死亡(除非您使用NOHUP这种情况,否则它们会返回init)。 现在,即使我不相信这一点,我仍然编写了一个简单的程序来确保这一点。我知道我不应该依赖时间(sleep)进行测试,因为这完全取决于流程调度,但是对于这种简单情况,我认为这已经足够了。 int main(void){ printf("Father process spawned (%d).\n", getpid()); sleep(5); if(fork() == 0){ printf("Child process spawned (%d => %d).\n", getppid(), getpid()); sleep(15); printf("Child process exiting (%d => %d).\n", getppid(), getpid()); exit(0); } sleep(5); printf(stdout, "Father process exiting (%d).\n", getpid()); return EXIT_SUCCESS; } 这是程序的输出,ps每次printf通话时都有相关的结果: $ ./test & …
41 process  init  exit  fork 

6
从子外壳退出外壳脚本
请考虑以下代码段: stop () { echo "${1}" 1>&2 exit 1 } func () { if false; then echo "foo" else stop "something went wrong" fi } 通常,当func被调用时,它将导致脚本终止,这是预期的行为。但是,如果它是在子外壳中执行的,例如 result=`func` 它不会退出脚本。这意味着调用代码必须每次检查函数的退出状态。有办法避免这种情况吗?这set -e是为了什么?

5
防止grep在不匹配的情况下退出
该脚本不回显“ after”: #!/bin/bash -e echo "before" echo "anything" | grep e # it would if I searched for 'y' instead echo "after" exit 如果我删除了-eshebang行上的选项,也可以,但是我希望保留它,以便在出现错误时脚本停止。我不认为grep发现没有匹配项是错误。如何防止它过分退出?


3
如何检测我是否在子外壳中?
我正在尝试编写一个函数来替换exit内置函数,以防止自己退出终端。 我试图使用SHLVL环境变量,但是在子外壳中似乎没有改变: $ echo $SHLVL 1 $ ( echo $SHLVL ) 1 $ bash -c 'echo $SHLVL' 2 我的功能如下: exit () { if [[ $SHLVL -eq 1 ]]; then printf '%s\n' "Nice try!" >&2 else command exit fi } 但是,这不允许我exit在子shell中使用: $ exit Nice try! $ (exit) Nice try! 有什么好的方法可以检测我是否在子外壳中?
24 bash  shell  exit  subshell 


2
bash脚本末尾的退出代码
我对bash脚本结尾处的退出代码的含义感到困惑:我知道退出代码0表示成功完成了退出,而且还有更多的退出代码编号(如果我没记错的话,为127)。 我的问题是关于在脚本末尾看到退出代码0时,即使脚本失败还是会强制退出代码为0还是有其他含义?

4
当let或expr的值为0时,bash -e退出
我有一个设置-e的bash脚本,因此该脚本将在任何退出状态!= 0时退出。 我试图做一些分配给变量的基本Shell算术运算,有时表达式等于0,这会使let或expr命令的退出状态为“ 1”。 这是一个例子: #!/bin/bash -ex echo "Test 1" Z=`expr 1 - 1` || true echo "Z will print" let "A=4 - 4" echo "A WILL NEVER PRINT $A" Y=`expr 1 - 1` echo "Y WILL NEVER PRINT $Y" X=$(expr 2 - 2) echo "X WILL NEVER PRINT $X" …

7
通过一个命令退出所有SSH连接并关闭PuTTY
有没有办法退出所有SSH连接并“一次性” 关闭PuTTY?我在Windows 7中工作,并使用PuTTY SSH到各种Linux主机。 我发现自己工作的方式的一个示例: SSH to host1 with PuTTY... banjer@host1:~> #...doin some work...ooh! need to go check something on host8... banjer@host1:~> ssh host8 banjer@host8:~> #...doin some work...OK time for lunch. lets close putty... banjer@host8:~> exit banjer@host1:~> exit Putty closes. 从上面看,有什么方法可以一口气从host8到关闭PuTTY?有时我发现自己多达5或10个主机。我知道我可以单击X关闭PuTTY窗口,但是我想确保通过使用exit命令可以正确关闭我的SSH连接。我也意识到我在询问有关如何增加懒惰的技巧。我将其写为“如何提高效率”。
18 linux  ssh  windows  putty  exit 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.