Nowe posty

xx Dystrybucja pod HP Omen (7)
Dzisiaj o 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
lamp Problem z Linux Lite po instalacji (0)
2024-03-27, 19:50:30
xx Ile pingwinów? (1)
2024-03-27, 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: [solved]składnia bash  (Przeczytany 2060 razy)

Offline Tomasz Rozalski

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 108
    • Zobacz profil
[solved]składnia bash
« dnia: 2016-01-21, 22:11:09 »
Wpisanie w konsoli
sudo dd if=/dev/sdc conv=sync,noerror bs=64K | gzip -c | pv -pterb >  /media/vane/B551-0F46/sdc.imdg.gz
powoduje utworzenie obrazu dysku sdc, spakowanie go i zapisanie w /media/vane/B551-0F46/sdc.imdg.gz z wyświetlaniem postępu czynności. Zapisanie tego samego w skrypcie
#!/bin/bash 
kom="sudo dd if=/dev/sdc conv=sync,noerror bs=64K | gzip -c | pv -pterb >  /media/vane/B551-0F46/sdc.imdg.gz"
$kom
wywala błąd
Cytuj
dd: błędna opcja -- 'c'
. Wie ktoś coś?
« Ostatnia zmiana: 2016-01-22, 06:47:55 wysłana przez Tomasz Rozalski »

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2763
  • 1709
    • Zobacz profil
Odp: składnia bash
« Odpowiedź #1 dnia: 2016-01-21, 23:04:45 »
A może tak ?

#!/bin/bash 
function FuncKomenda() {
sudo dd if=/dev/sdc conv=sync,noerror bs=64K | gzip -c | pv -pterb >  /media/vane/B551-0F46/sdc.imdg.gz
}
export -f FuncKomenda

FuncKomenda
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline Tomasz Rozalski

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 108
    • Zobacz profil
Odp: składnia bash
« Odpowiedź #2 dnia: 2016-01-22, 06:47:20 »
Oczywiście, Zamykamy.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3049
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Odp: [solved]składnia bash
« Odpowiedź #3 dnia: 2016-01-22, 08:51:30 »
#!/bin/bash 
kom="sudo dd if=/dev/sdc conv=sync,noerror bs=64K | gzip -c | pv -pterb >  /media/vane/B551-0F46/sdc.imdg.gz"
$kom
Wiem, że "closed", ale słowo od ojca prowadzącego odpowiadające na pytanie "WHY?":

W takiej składni znika "magiczność" operatorów "|" i ">" i cała linijka staje się wielkim argumentem sudo (po obcięciu pierwszego i przelogowaniu - wielkim argumentem dd).

script.sh :
#!/bin/bash

CMD="echo 'hello' | tr [a-z][A-Z] > /tmp/out"

$CMD
i teraz
$> ./script.sh
'hello' | tr [a-z] [A-Z] > /tmp/out
(czyli cała linijka stała się argumentem echo)

Żeby działało to zgodnie z intencją, trzeba to skonstruować tak:
#!/bin/bash

CMD="echo 'hello' | tr [a-z] [A-Z] > /tmp/out"

bash -c "$CMD"
i teraz
$> ./script.sh
$>  cat /tmp/out
HELLO

bash z parametrem -c "WYRAŻENIE" sprawia, że WYRAŻENIE jest traktowane jaka kompletny skrypt, z zachowanem "magiczności" wszystkich operatorów.

Natomiast ciągle nie rozumiem celu pierwszego skryptu... Zawinąć w zmienną, żeby zaraz odpalić.
« Ostatnia zmiana: 2016-01-22, 08:53:13 wysłana przez Paweł Kraszewski »
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
Odp: [solved]składnia bash
« Odpowiedź #4 dnia: 2016-01-22, 12:13:31 »
Można też użyć:
eval $kom