无法在Shell脚本中保存进程的进程ID

时间:2018-06-04 13:10:57

标签: linux bash shell unix

我只是在Unix中试用shell脚本。我想捕获在端口号1337上运行的进程的进程ID。所以我编写了以下代码:

echo -e "Test Starts"
process_id= /bin/ps -fu $USER| grep 1337 | grep -v "grep" | awk '{print $2}'
echo $process_id

并将其保存在名为auto.sh

的文件中

现在,当我运行以下命令时:

./auto.sh

我得到下面给出的输出:

Test Starts
9067

永远不会回复$process_id。所以我的猜测是,它没有存储。

我调查了以下内容,但没有帮助

Link 1 Link 2

1 个答案:

答案 0 :(得分:0)

使用command substitution的两种方式:

  1. 反击“命令” 是老式的

    echo`id -u`

  2. $()现代方式,更具可读性

    echo $(id -u)

  3. 两者都做同样的事情,评估内部的内容,然后返回命令结果。

    何时/为何使用另一个:

    • ``Backticks

      与olders shell的兼容性

    • $()

      很难区分** ** and **'** ('``'````''''

      嵌套命令替换更容易

      echo $(uname&& $(echo id -u))

      Linux 15444

    \\ echo`uname&& `echo id -u``

     -bash: command substitution: line 2: syntax error: unexpected end of file