Скрипт для выполнения параметров как команд для всех файлов каталога
85
9
Мне интересно, как заставить этот скрипт работать:
for f in *.php
do
for c in seq 1 $#
do
eval 'eval echo \$$c'
done
done
Основная идея скрипта y выполнить все команды, переданные скрипту в каждом файле, например:
bash script.sh "grep text \$f" "echo \"Done!\""
Должно быть такое же:
for f in *.php
do
grep text $f
echo "Done!"
done
Я думаю, что это довольно просто, но я застрял здесь долго. Любая помощь?
спросил(а)
2013-01-31T04:31:00+04:00
7 лет, 12 месяцев назад
добавить комментарий
пожаловаться
Решение
60
Следующий простой рецепт в вашем скрипте bash должен работать.
for arg in "$@"
do
find . -name '*.php' -print0 | xargs -n1 -0 -i $arg {}
done
ответил(а)
2013-01-31T06:27:00+04:00
7 лет, 12 месяцев назад
добавить комментарий
пожаловаться
74
Вы можете заставить его работать следующим образом:
for f in *.php
do
for arg
do
eval "$arg"
done
done
Более общий (и более безопасный) подход
find *.php -print0 | xargs -0 -I{} "$@"
который можно запустить как ./yourscript grep text {}
, но он не позволяет создавать произвольные оболочки.
ответил(а)
2013-01-31T04:38:00+04:00
7 лет, 12 месяцев назад
добавить комментарий
пожаловаться
Ваш ответ