sh if-else 语句较新执行 else 语句

时间:2021-07-06 13:14:45

标签: shell sh

我正在使用一些使用 Yocto 构建的嵌入式 Linux 发行版。我需要检查 sh 脚本是否正在运行某个应用程序。当应用程序运行时 if 语句会被执行,但如果应用程序没有运行,则 else 语句不会被执行并且屏幕上不会显示任何内容。我在PC上测试了这段代码,它工作正常。你知道为什么这段代码在我的嵌入式 Linux 发行版上不起作用吗?我能看到的唯一区别是在我的嵌入式 Linux 上 echo $SHELL 显示 /bin/sh,在 PC 上显示 /bin/bash 但它是非常简单的代码,它应该适用于 bashsh

我的代码:

#!/bin/sh

check_status()
{
    pid=`pidof -x my_app`
    if [ -n "$pid" ]; then
        echo "My_app is running."
    else
        echo "My_app is stopped."
    fi  
}   

check_status

非常感谢您提供任何帮助。

编辑:

  1. pidof 在我的嵌入式 Linux 上可用。
  2. 我将 shell 设置为 /bin/bash 而不是 /bin/sh 并重新启动系统。
  3. 我将脚本的第一行替换为以下内容:#!/usr/bin/env bash

第二个和第三个解决方案都没有解决我的问题。

0 个答案:

没有答案