Обычно используется xargs , чтобы сделать вывод одной команды параметром для другой команды. Например:
$ cat command1
#!/bin/sh
echo "one"
echo "two"
echo "three"
$ cat command2
#!/bin/sh
printf '1 = %s\n' "$1"
$ ./command1 | xargs -n 1 ./command2
1 = one
1 = two
1 = three
$
Но ... хотя это был твой вопрос, это не то, что ты действительно хочешь знать.
Если вы не возражаете против сохранения вашего tty в переменной, вы можете использовать переменную bash для замены:
$ tty=`tty`; who | grep -w "${tty#/dev/}"
ghoti pts/198 Mar 8 17:01 (:0.0)
(Вам нужен ключ -w, потому что если вы используете pts / 6, вы не должны видеть логины pts / 60.)
Вы ограничены тем, что делаете это в переменной, потому что, если вы попытаетесь поместить команду tty
в канал, она думает, что она больше не работает, связанная с терминалом.
$ true | echo `tty | sed 's:/dev/::'`
not a tty
$
Обратите внимание, что пока ничего в этом ответе не относится к bash. Поскольку вы используете bash, другой способ обойти эту проблему - использовать процесс подстановки. Например, пока это не работает:
$ who | grep "$(tty | sed 's:/dev/::')"
Это делает:
$ grep $(tty | sed 's:/dev/::') < <(who)