Вот мой сценарий:

    var=  $( $line | grep -Po '.*(?=.fr)' )
    echo $var

У меня есть ошибка, и она отображает только:

 command not found

Ты хоть представляешь, что не так?

1 ответ1

1

Передача вывода команды в переменную.

Простой пример, немного похожий на ваш

$ 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 тогда вы ничего не видите там. Так что ничего не надо искать и ничего не найти. Итак, вам нужно отобразить строковую переменную, а не запускать ее, как будто это команда.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .