Для Windows вы можете использовать for /f
для обработки файла и создания команды из него.Следующий скрипт supergo.cmd
показывает, как это можно сделать:
@setlocal enableextensions enabledelayedexpansion
@echo off
for /f "delims=" %%f in (list.txt) do (
echo go "%%f" download
)
endlocal
Следующие транскрипты показывают это в действии:
C:\Pax> type list.txt
file1.txt
file number 2.txt
another file.jpg
C:\Pax> supergo
go "file1.txt" download
go "file number 2.txt" download
go "another file.jpg" download
Если вы используете оболочку типа bash
Вы можете использовать sed
для создания временного сценария из входного файла, а затем выполнить следующее:
#!/bin/bash
sed -e "s/^/echo go '/" -e "s/$/' download/" list.txt >/tmp/tempexec.$$
chmod u+x /tmp/tempexec.$$
. /tmp/tempexec.$$
rm -rf /tmp/tempexec.$$
Это ставит echo go '
в начале каждой строки, ' download
в конце,затем помечает его как исполняемый и выполняет.
В обоих случаях (Windows и bash
) удалите echo
, чтобы заставить его выполнять реальную работу.