我只是在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
。所以我的猜测是,它没有存储。
我调查了以下内容,但没有帮助
答案 0 :(得分:0)
使用command substitution的两种方式:
反击“命令” 是老式的
echo
`id -u`
$()
现代方式,更具可读性
echo $(id -u)
两者都做同样的事情,评估内部的内容,然后返回命令结果。
何时/为何使用另一个:
``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