Вы используете одинарные кавычки вокруг $ file
, что означает, что переменная не раскрывается:
$ var="foo"
$ echo "$var"
foo
$ echo '$var'
$var
Итак, команда, которую вы ищете (с некоторыми дополнительными улучшениями):
while read -r file; do
ffmpeg -i "$file" -c:v libx265 -x265-params crf=23 -preset medium -c:a copy -c:s copy "${file%.mkv}_new.mkv"
done < mkv-analysis.csv
Обратите внимание, что нет необходимости в cat
и совершенно бессмысленно запускать команду в качестве подстановки команды ( $ (command)
). Это необходимо только тогда, когда вы хотите зафиксировать вывод команды в переменной.
Поскольку вы знаете PID в OS X, lsof
может вам подойти:
lsof -p 12345 | awk '$4=="0u"{print $NF}'
/dev/ttys039
# then you can write to the FD
echo "hi" > /dev/ttys039