Результат | grep в змінній


0

Ось мій сценарій:

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

У мене помилка, і вона відображається лише:

 command not found

Ви маєте ідею, що не так?


Також, якщо хтось цікавиться: Це надзвичайно небезпечно. Якщо $lineде його містити, rm -rf /то із задоволенням руйнуйте вашу систему. Ніколи не виконуйте змінних, за винятком випадків, якщо вони містять лише ваш вміст, а не введення користувача / файлу.
Даніель Б

Відповіді:


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то нічого там не бачите. Тож труби нічого не гребують і нічого не знаходять. Отже, вам потрібно повторювати змінну рядка, а не запускати її так, як це команда.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.