【问题标题】:commands not found when running script运行脚本时找不到命令
【发布时间】:2014-03-18 07:07:08
【问题描述】:

我有一个非常基本的脚本,不断吐出找不到命令。我浏览了整个网站,找不到适合我的答案。 bash 的路径是正确的。我用 od 检查了脚本。我已经运行了 dos2unix。这些对我都没有帮助。

脚本:

    #!/bin/bash
    HYBRISPROC=`ps -eo pid,command | grep [h]ybris | grep -v grep | awk '{print $1}'`
    echo "Looking for Hybris..."
    echo $HYBRISPROC

结果:

    ./HybrisStopStart.sh: line 5: ps: command not found
    ./HybrisStopStart.sh: line 5: grep: command not found
    ./HybrisStopStart.sh: line 5: awk: command not found
    ./HybrisStopStart.sh: line 5: grep: command not found
    Looking for Hybris...

有什么想法吗?如果我单独运行该命令,它可以正常工作。我也尝试过 sudo 并得到相同的结果。

TIA

【问题讨论】:

  • 顺便说一句,如果您使用grep [h]ybris,那么您不必使用grep -v grep
  • 尝试查看“pgrep”命令...“pgrep hybris”

标签: bash shell grep command pid


【解决方案1】:

怎么样?

#!/bin/bash
HYBRISPROC=`ps -eo pid,command | grep [h]ybris | grep -v grep | awk '{print $1}'`
echo "Looking for Hybris..."
echo "$HYBRISPROC"

(或)

#!/bin/bash
HYBRISPROC="ps -eo pid,command | grep [h]ybris | grep -v grep | awk '{print $1}'"
echo "Looking for Hybris..."
bash -c "$HYBRISPROC"

(或)

#!/bin/bash
HYBRISPROC="ps -eo pid,command | grep [h]ybris | grep -v grep | awk '{print $1}'"
echo "Looking for Hybris..."
eval "$HYBRISPROC"

总计:

你可以看到区别:

#!/bin/bash
LS=`ls -l`
echo $LS    #nasty way
echo 
echo "$LS"  #good way

【讨论】:

  • 这返回了 PS 的完整条目...好像我刚刚完成了 ps -ef | grep 混合动力。比我需要的更多,但朝着正确的方向前进。我只是想剔除 PID。
  • 我复制了你的命令......我向你介绍了从变量运行的方法......我认为这很有效
  • 如果我删除 bash -c 并用 echo 替换,我得到的正是我想要的。我想区别是最后一行 $HYBRISPROC 周围的“”。谢谢
  • Thought id 回来发布我最终使用的内容...因为 Hybris 返回两个 pid,我决定改为寻找并停止 tomcat...HYBRISPROC=$(ps -ef | grep [t]omcat | awk '/[t]omcat/{print $2}')
【解决方案2】:

尝试添加

PATH="$PATH:/usr/bin:/bin"

在代码之前。看起来 bin 目录不在您的路径上。所以找不到命令。

【讨论】:

    猜你喜欢
    • 2020-11-04
    • 2022-08-17
    • 1970-01-01
    • 2014-01-05
    • 2017-05-28
    • 2016-09-27
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    相关资源
    最近更新 更多