Всем здрасьте. Только осваиваю скрипты, читаю вики на вашем чудесном сайте потихоньку. Появилась практическая необходимость создать скрипт, который использует стороннюю программу (форматирование). Суть следующая: я задаю в скрипте переменную i, которая будет означать любой файл в указанной директории с расширением format1. Используя стороннюю программу и цикл for, для переменной i, я пытаюсь выполнить форматирование в format2 c сохранением имени. Выглядит у меня так:#!/bin/bash
i=/dir/*format1 #все файлы с форматом format1
for $i
do
cd /dir2/ #директория программы
./prog $i /dir3/$i.format2 #выход с сохранением имени
done
exit 0Скрипт, как вы поняли, не работает. Помогите с освоением.
как то так
#!/bin/bashcd dir
ls *format1 | while read curr_file
do
/dir2/prog ${curr_file} /dir3/${curr_file}.format2
done
> как то так
>
> #!/bin/bash
> cd dir
> ls *format1 | while read curr_file
> do
> /dir2/prog ${curr_file} /dir3/${curr_file}.format2
> done
>Спасибо большое за помощь. Скрипт работает. Буду дальше осваивать :)
> Спасибо большое за помощь. Скрипт работает. Буду дальше осваивать :)литературку почитай - а то подобное "осваивание" с родни осваиванию специальности токаря путем подтаскивая болванок к станку ...
Файлы с пробелами будут с проблемами.
для программ всегда используйте полный путь к ним...
> Файлы с пробелами будут с проблемами.да, достаточно немного подправить
/dir2/prog "${curr_file}" "/dir3/${curr_file}.format2"
# ls
file with spaces.txt# ls *.txt | while read curr_file; do cat ${curr_file}; done
cat: file: No such file or directory
cat: with: No such file or directory
cat: spaces.txt: No such file or directory# ls *.txt | while read curr_file; do cat "${curr_file}"; done
123