how to assign terminal variable from previous command's output

macos, terminal

Solution

The thing you’re looking for is called command substitution. It lets you treat the output of a command as input to the shell.

For example:

$ mydate="$(date)"
$ echo "${mydate}"
Mon 24 Feb 2014 22:45:24 MST

It’s also possible to use ``backticks`` instead of the dollar sign and parentheses, but most shell style guides recommend avoiding that.

In your case, you probably want to do something like this:

$ PID="$(lsof -i tcp:8000 | grep TCP | awk '{print $2}')"
$ kill $PID

Problem

I'm very very new to the terminal script world. Here's what I want to do: ``` 1) Find out the process that's using a given port (8000 in this case) 2) Kill that process ``` Pretty simple. I can do it manually using: ``` lsof -i tcp:8000 -- get the PID of what's using the port kill -9 $PID -- terminate the app using the port ``` For reference, here's exactly what gets returned when using lsof -i tcp:8000 ``` COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME php 94735 MyUser 5u IPv6 0x9fbd127eb623aacf 0t0 TCP localhost:irdmi (LISTEN) ``` Here's my problem: how do I capture the PID value from `lsof -i tcp:8000` so that I can use that variable for the next command? I know how to create variable that I assign... just not ones that are dynamically made.

Original source