Я пытаюсь самостоятельно выполнить некоторые скрипты bash.
Предположим, что я хотел бы добавить «hi» в начале строк, таких как:
a="find . -type f"
$ for i in $a;do echo hi $i; done
но вывод:
hi find
hi .
hi -type
hi f
Я хотел бы поставить каждое начало выполнения переменной в качестве вывода файла, которое здесь «hi», как я могу это сделать?
EDIT: я хочу добавить hi to very fron из вывода «a», но этот скрипт добавляет привет каждой строке ..
EDIT: для типа -f для -типа f, спасибо @Terrance [ ! d5]
может вывести be;
hi ./me
hi ./you
извините за непонятный вопрос, я надеюсь, что вы сможете редактировать работу ...
Цикл for рассматривает $a как строку и не выполняет его.
Используйте $(command), когда вам нужно выполнить что-то внутри другой команды.
Итак, что бы вы сделали в своем случае (пожалуйста, не делайте этого, но следуйте подсказке ниже):
for i in $($a); do echo hi $i; done
Дополнительный совет: избегайте использования цикла for с выходом find, поскольку вы будете запускать в случаях, когда имена файлов содержат пробелы.
В вашем случае будет работать следующее:
a="find . -type f"
while IFS= read -r i; do
echo "hi $i"
done < <($a)
<(command) создает временный файл выходного файла команды.) [!d5 ]
Цикл for рассматривает $a как строку и не выполняет его.
Используйте $(command), когда вам нужно выполнить что-то внутри другой команды.
Итак, что бы вы сделали в своем случае (пожалуйста, не делайте этого, но следуйте подсказке ниже):
for i in $($a); do echo hi $i; done
Дополнительный совет: избегайте использования цикла for с выходом find, поскольку вы будете запускать в случаях, когда имена файлов содержат пробелы.
В вашем случае будет работать следующее:
a="find . -type f"
while IFS= read -r i; do
echo "hi $i"
done < <($a)
<(command) создает временный файл выходного файла команды.)
Цикл for рассматривает $a как строку и не выполняет его.
Используйте $(command), когда вам нужно выполнить что-то внутри другой команды.
Итак, что бы вы сделали в своем случае (пожалуйста, не делайте этого, но следуйте подсказке ниже):
for i in $($a); do echo hi $i; done
Дополнительный совет: избегайте использования цикла for с выходом find, поскольку вы будете запускать в случаях, когда имена файлов содержат пробелы.
В вашем случае будет работать следующее:
a="find . -type f"
while IFS= read -r i; do
echo "hi $i"
done < <($a)
<(command) создает временный файл выходного файла команды.)