Выполнение переменных в ударе

Я пытаюсь работать некоторые сценарии удара самостоятельно.

Скажем, я хотел бы, добавляют "привет" в начале строк такой как;

a="find . -type f"

$ for i in $a;do echo hi $i; done

но вывод:

hi find
hi .
hi -type
hi f

Я хотел бы поместить каждое начало переменного выполнения как вывод файла, который является здесь a, "привет" как я могу сделать это?

Править: я хочу добавить привет к очень fron "a" вывода переменных, но этого сценария, добавляющего привет каждую строку a..

Править: для типа-f к - тип f, @Terrance спасибо

может произвести быть;

hi ./me
hi ./you

жаль о неясном вопросе я надеюсь, может отредактировать работу...

0
задан 3 August 2017 в 06:52

1 ответ

Ваш for цикл рассматривает $a как строка и не выполнит его.

Использовать $(command) когда необходимо выполнить что-то в другой команде.

Таким образом, то, что Вы сделали бы в своем случае, (не делайте этого, но следуйте за подсказкой ниже):

for i in $($a); do echo hi $i; done

Дополнительная Подсказка: Избегайте использования для цикла с выводом находки, поскольку Вы столкнетесь с проблемами, когда Ваши имена файлов будут содержать пробелы.

В Вашем случае будет работать следующее:

a="find . -type f"
while IFS= read -r i; do
    echo "hi $i"
done < <($a)

<(command) создает временный файл вывода команды.)

1
ответ дан 2 November 2019 в 20:32

Другие вопросы по тегам:

Похожие вопросы: