Вот мой сценарий:
var= $( $line | grep -Po '.*(?=.fr)' )
echo $var
У меня есть ошибка, и она отображает только:
command not found
Ты хоть представляешь, что не так?
Передача вывода команды в переменную.
Простой пример, немного похожий на ваш
$ a=$(echo abc | grep -o a)
$ echo $a
a
Так что в вашем случае
$ line=asdf.fr
$ a=$(echo $line | grep -Po '.*(?=.fr)')
$ echo $a
asdf
$
Ваша строка завершилась неудачно, потому что она расширила строковую переменную $ line и выполнила ее, которая записывает ошибку в stderr и ничего в stdout. Все $ с разными значениями выглядят немного забавно. Но если вы сделали (по приглашению $) $$line<ENTER>
вы получите команду не найдена. И если вы делаете $$line>a
cat a
тогда вы ничего не видите там. Так что ничего не надо искать и ничего не найти. Итак, вам нужно отобразить строковую переменную, а не запускать ее, как будто это команда.