echo $ PATH буквально печатает "$ PATH" в качестве вывода - PullRequest
0 голосов
/ 30 мая 2018

Я хочу просмотреть текстовый файл, который содержит одну команду на строку.Я хочу прочитать каждую строку, выполнить каждую команду, а затем сохранить вывод в файл.

Часть скрипта, которая вызывает у меня проблемы:

echo COMMAND LOG > $dest/command.log

echo ====== >> $dest/command.log

while IFS= read -r v

do
    echo ====== >> $dest/command.log

    echo COMMAND: $v >> $dest/command.log

    echo ======OUTPUT====== >> $dest/command.log

    $v >> $dest/command.log

    echo ====== >> $dest/command.log

done < "$commands"

Отлично работает длявсе, кроме "echo $ PATH", которое генерирует:

======

COMMAND: echo $PATH

======OUTPUT======

$PATH

Есть ли способ заставить его работать должным образом?Заранее спасибо.

1 Ответ

0 голосов
/ 30 мая 2018

Ожидается, потому что вы извлекаете файл строка за строкой, у вас есть строки, а не переменные.$v - это строка "$PATH", вот и все.

Вы должны eval свою строку, чтобы получить значение связанной переменной:

echo COMMAND: $(eval $v) >> $dest/command.log
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...