Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: [solved]składnia bash  (Przeczytany 2070 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: 2765
  • 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: 3056
  • 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