在bash文件中使用带有echo的系统命令

时间:2016-02-16 00:20:47

标签: bash shell unix if-statement echo

我一直在通过论坛搜索解决这个问题的方法,但我遇到的一切都是出于我的联盟,或者没有解决我的问题。我想要做的是非常基本的,但似乎无法让它在unix中工作。我目前正在使用unix中的bash脚本,我无法使用if语句和echo命令。

尝试获取if语句以在其中运行系统命令,并且每次遇到未找到命令的错误时。 (即:whoami:命令未找到。) echo命令也有同样的问题。 (即:w:命令未找到。)我知道这些命令会起作用,因为我可以将它们扔进命令行,它们返回我正在寻找的值。

function userprocess {
if [[ $(whoami | grep $EUIDS) = $EUIDS ]]
then
        echo -e "==> Active processes for $EUIDS \050 Logged in \0051:"
        echo "$(w -h $EUIDS)"
else
        echo -e  "==> Active processes for $EUIDS \0050 NOT logged in \0051:"
        echo "$(w -h $EUIDS)"
fi
}

我试过这个

function userprocess {
if [[ ${command[whoami | grep $EUIDS]} = $EUIDS ]]
then
        echo -e "==> Active processes for $EUIDS \050 Logged in \0051:"
        echo ${command[w -h $EUIDS]}
else
        echo -e  "==> Active processes for $EUIDS \0050 NOT logged in \0051:"
        echo ${command[w -h $EUIDS]}
fi
}

这......

function userprocess {
if [[ 'whoami | grep $EUIDS' = $EUIDS ]]
then
        echo -e "==> Active processes for $EUIDS \050 Logged in \0051:"
        echo 'w -h $EUIDS'
else
        echo -e  "==> Active processes for $EUIDS \0050 NOT logged in \0051:"
        echo 'w -h $EUIDS'
fi
}

我在这里做错了什么?有时我得到正确的输出只是为了得到一个等于$ EUIDS的错误标记。我已经走到了尽头,我需要一条生命线来完成这件事。

1 个答案:

答案 0 :(得分:0)

好吧所以问题不是代码的语法,而是变量名的问题。我的大多数变量名都在UPPERCASE中,这导致PATH被覆盖。 例如:

PATH=$(pwd)

这会覆盖。 你需要这样做:

path=$(pwd)

代码段的正确语法是:

function userprocess {
if [ "$(users | grep -c $euids)" = "$euids" ]
then
        echo -e "==> Active processes for $euids \050 Logged in \0051:"
        w -h $euids
else
        echo -e  "==> Active processes for $euids \0050 NOT logged in \0051:"
        w -h $euids
fi
}

感谢您对此问题的所有意见!干杯!

相关问题