shell程序的结束状态

        在Unix中,程序结束时会返回一个状态,这个状态可以指示程序是否成功执行。如果使用了pipeline,那么返回的是最后一个程序的状态。
        我们可以使用$?变量来获取上一个程序的状态。例如

$ cp phonebook phone2 
$ echo $? 
0      
         从结果看出cp程序成功执行。
         有了这个,我们就可以使用if语句来控制程序的流程了,如
user="$1" 
 
if who | grep "$user" 
then 
    echo "$user is logged on" 
fi

          这个程序根据传入的参数来判断用户是否登录。这里直接使用程序的返回值来当判断条件,我们也可以使用test命令来作为if的条件,test命令回去执行传入的表达式,返回结果。如test "$name" = julio ;test命令的变量和运算符之间需要空格隔开,这点和变量赋值相反。

          test命令的替代形式是使用中括号,注意中括号前后要有一个空格。如

if [ "$name" = julio ]

then

        echo "Would you like to play a game?"

fi

          [ ]命令提供了一些对整数操作的方法,如下

int1-eq int2

int1 is equal to int2.

int1-ge int2

int1 is greater than or equal to int2.

int1-gt int2

int1 is greater than int2.

int1-le int2

int1 is less than or equal to int2.

int1-lt int2

int1 is less than int2.

int1-ne int2

int1 is not equal to int2.

对文件操作的方法

-d file

file is a directory.

-e file

file exists.

-f file

file is an ordinary file.

-r file

file is readable by the process.

-s file

file has nonzero length.

-w file

file is writable by the process.

-x file

file is executable.

-L file

file is a symbolic link.

           我们可以在这些操作符前加上一些逻辑操作符来对结果进行逻辑操作,如

!用来对结果取反,[ ! -f "$mailfile" ]
-a 逻辑与,只有当所有结果为真时才返回0,-a的优先级比整数操作符,字符操作符和文件操作符的优先级低,[ -f "$mailfile" -a -r "$mailfile" ]

-o 逻辑或,只要有一个的结果返回真,就返回0,-o的优先级比-a低,[ -n "$mailopt" -o -r $HOME/mailfile ]

if-else if-else语句结构

if commandl 
then 
        command 
        command 
        ... 
elif command2 
then 
        command 
        command 
        ... 
elif commandn 
then 
        command 
        command 
        ... 
else 
        command 
        command 
        ... 
fi

case语句结构

case value in 
pat1)   command 
       command 
       ... 
       command;; 
pat2)   command 
       command 
       ... 
       command;; 
... 
patn)   command 
       command 
       ... 
       command;; 
esac 

: 命令表示什么都不做,例如

if grep "^$system" /users/steve/mail/systems > /dev/null 
then 
        : 
else 
        echo "$system is not a valid system" 
        exit 1 
fi 

&&,这个可以用来实现类似if的功能,command1
&& command2,只有当command1返回0时,command2才能执行

||,这个和 &&类似,command1 || command2,只有command1返回非零值时,command2才能执行。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7899089/viewspace-628034/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7899089/viewspace-628034/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下命令来监测程序状态: 1. ps命令:用于查看进程状态,包括正在运行的进程和已经停止的进程。 ```bash ps -ef | grep <进程名> ``` 2. pgrep命令:用于查找正在运行的进程的PID。 ```bash pgrep <进程名> ``` 3. pidof命令:用于查找正在运行的进程的PID。 ```bash pidof <进程名> ``` 4. kill命令:用于向指定的进程发送信号,可以通过发送不同的信号来控制进程的运行状态。 ```bash kill -0 <进程PID> ``` 如果kill命令返回0,表示进程仍在运行;否则,表示进程已经停止。 ### 回答2: 在shell中,可以使用一些命令来监测程序状态。 1. ps命令:ps命令可以显示当前正在运行的进程列表。我们可以使用grep过滤出特定进程的信息。例如,使用命令"ps aux | grep program_name"可以查找进程名为program_name的程序是否正在运行。 2. pgrep命令:pgrep命令可以根据进程名查找进程的PID。我们可以通过检查该命令的返回值是否为0来确定程序是否正在运行。例如,使用命令"pgrep program_name",如果返回值为0,则表示该程序正在运行。 3. pidof命令:pidof命令可以根据进程名查找进程的PID。与pgrep类似,我们可以通过检查该命令的返回值是否为空来判断程序是否正在运行。例如,使用命令"pidof program_name",如果没有返回值,则表示该程序没有在运行。 4. psutil库:如果需要在shell脚本中使用更详细的监测程序状态的功能,可以使用Python的psutil库。psutil库提供了更多的功能,例如获取程序的CPU使用率、内存使用情况等。可以使用pip安装该库,并在shell脚本中调用相应的函数来监测程序状态。 综上所述,我们可以使用ps命令、pgrep命令、pidof命令或者psutil库来监测程序状态。根据具体的需求选择适合的方法,并结合脚本编写来实现程序状态监测。 ### 回答3: 在Shell中,我们可以使用各种命令和技术来监测程序状态。 一种常见的方法是使用ps命令来列出正在运行的进程。我们可以使用ps命令加上选项来筛选特定的进程,比如根据进程名或PID。例如,使用ps aux命令可以列出系统中所有正在运行的进程,包括他们的详细信息。 另一种方法是使用pgrep命令来查找特定的进程。我们可以使用pgrep命令和进程名作为参数,它会返回进程对应的PID。然后,我们可以检查返回值来判断进程是否正在运行。 另外,我们还可以使用kill命令来发送信号给进程。比如,我们可以使用kill -0命令来发送0信号给进程,在这种情况下,我们不会真正结束进程,而是检查进程是否存在。如果进程存在,命令会返回0,否则返回非0值。 除了上述的命令外,我们还可以使用Shell脚本中的if语句和循环来监测进程状态。我们可以编写一个脚本,循环地检查进程是否存在,如果不存在就执行一些操作。 总之,在Shell中,我们有许多方法来监测程序状态,包括使用ps、pgrep、kill等命令,以及使用Shell脚本中的控制结构。这些方法可以帮助我们监控和管理程序的运行状态

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值