BASH - 找不到什么$?特殊变量意味着

时间:2012-08-17 20:00:02

标签: linux bash

有人知道BASH中$?的含义吗?

我必须编写一个脚本,如果它崩溃或被杀死,它会重启一个进程。所以我发现这是从:

开始
RESTART="/etc/init.d/apache2 restart"
if [ $? -ne 0 ] # if apache not running
then
   # restart apache
   $RESTART
fi

我做了搜索,但是$?我不知道。

我不确定上述脚本是否是执行此操作的最佳方式,我假设$ RESTART将挂起,直到进程被终止或死亡?如果没有,我会假设那里会有一些sleep()调用,所以这个东西不会以每小时1000英里的速度旋转。

2 个答案:

答案 0 :(得分:6)

  

任何人都知道$?在bash中意味着

这是最近执行的命令的退出状态。

[cnicutar@fresh ~]$ ls /nothing
ls: cannot access /nothing: No such file or directory
[cnicutar@fresh ~]$ echo $?
2

[cnicutar@fresh ~]$ ls -ld .
drwx------ 15 cnicutar users 4096 Aug 16 15:29 .
[cnicutar@fresh ~]$ echo $?
0

tldp处查找。

答案 1 :(得分:0)

问:不能找到什么bash $?装置

答:这是该计划的“返回状态”。

/* In this example, "$?" from "./hello" will be "0": Status == OK */
#include <stdio.h>

int main (argc, char*argv[])
{
  printf ("Hello world!\n");
  return 0;
}

以下是“特殊shell变量”列表: