Nie rozumiem tego skryptu za bardzo. Zwraca mi to:
Kod:
/home/przemek/test.sh: line 6: .: wymagany argument w postaci nazwy pliku
.: usage: . filename [arguments]
t.sh
No dobra, to opiszę jak najdokładniej co chcę zrobić i po kolei.
Więc chciałbym pociąć pliki za pomocą dd - i to mi się udaje. Pliki które będę ciął mają różne nazwy, a mogą być konkretnie takie, zawsze po trzy (w miejscach 12345 i 1234567 zawsze dowolne liczby, w niektórych nazwach dodatkowe znaki i spacja):
SCPH-12345 R_1234567_BOOT_ROM.bin
SCPH-12345 R_1234567_DVD_ROM.bin
SCPH-12345 R_1234567_NVM.bin
lub takie :
SCPH-12345_1234567_BOOT_ROM.bin
SCPH-12345_1234567_DVD_ROM.bin
SCPH-12345_1234567_NVM.bin
lub takie:
DESR-12345_1234567_BOOT_ROM.bin
DESR-12345_1234567_DVD_ROM.bin
DESR-12345_1234567_NVM.bin
lub takie:
DTL-H12345_BOOT_ROM.bin
DTL-H12345_DVD_ROM.bin
DTL-H12345_NVM.bin
Skrypt powinien sam się dowiedzieć jaką nazwę mają pliki i je przypisać do zmiennych: "bootrom", "dvdrom", "eeprom" tak aby nie wpisywać do dd ręcznie nazw lub aby nie ustalać nazw przed odpalaniem skryptu.
Na tę chwilę skrypt wygląda tak:
Kod:
#!/bin/bash
bootrom="$(find ${HOME} *_BOOT_ROM.bin -maxdepth 0)"
dvdrom="$(find ${HOME} *_DVD_ROM.bin -maxdepth 0)"
eeprom="$(find ${HOME} *_NVM.bin -maxdepth 0)"
dd if=$HOME/"$bootrom" of=$HOME/"$prefix".rom0 bs=2M
dd if=$HOME/"$dvdrom" of=$HOME/"$prefix".rom1 bs=256K count=1
dd if=$HOME/"$dvdrom" of=$HOME/"$prefix".rom2 bs=256K count=1
dd if=$HOME/"$dvdrom" of=$HOME/"$prefix".erom skip=512 count=3584
dd if=$HOME/"$eeprom" of=$HOME/"$prefix".nvm bs=1K count=1
# dd if=$HOME/"$eeprom" of=$HOME/"$prefix".mec bs=4 count=1 skip=chujwieile
echo -e "\n"
break
I to nie działa bo zmienne dostają oprócz nazwy pliku też ścieżkę i znak entera, czyli zamiast oczekiwanej np.
Kod:
SCPH-12345 R_1234567_BOOT_ROM.bin
dostaję:
Kod:
/home/przemek/
SCPH-12345 R_1234567_BOOT_ROM.bin
PS: brakuje też zmiennej prefix, ale to nie istotne, jak będę wiedział jak wydłubać te nazwy to sobie z tym poradzę.