我一直在通过论坛搜索解决这个问题的方法,但我遇到的一切都是出于我的联盟,或者没有解决我的问题。我想要做的是非常基本的,但似乎无法让它在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的错误标记。我已经走到了尽头,我需要一条生命线来完成这件事。
答案 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
}
感谢您对此问题的所有意见!干杯!