Nowe posty

xx Dystrybucja pod HP Omen (6)
Wczoraj o 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
Wczoraj o 21:08:23
lamp Problem z Linux Lite po instalacji (0)
Wczoraj o 19:50:30
xx Ile pingwinów? (1)
Wczoraj o 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: [skrypt BASH] prawo do zapisu.  (Przeczytany 1532 razy)

yahou

  • Gość
[skrypt BASH] prawo do zapisu.
« dnia: 2014-12-02, 20:22:27 »
Cześć!
czy ktoś z Was może mi powiedzieć jak stworzyć bramkę, która wyłączy program jeżeli parametr pierwszy nie ma prawa do zapisu, a przepusci gdy takowe ma?

Naskrobalem cos takiego. Prawde mowiac nie wiem jak korzystac z testow, stad ten problem. Caly czas probue wynik testu przypisac do zmiennej, ale nie wychodzi.

Kawalek kodu:
#NIE DZIAŁA- TEST 3- PRAWO DO ZAPISU
#++++++++++++++++++++++++++++++++++++++++++++
echo
echo warunek 3- plik1 musi miec prawo zapisu

prawo=`test -w $1`
if [ $prawo -ne 0 ]
   then  
   echo ERROR... brak praw zapisu
   exit 1

   else
   echo mamy prawa zapisu
   
   fi
pozdrawiam.

alvaro

  • Gość
[skrypt BASH] prawo do zapisu.
« Odpowiedź #1 dnia: 2014-12-02, 22:23:49 »
Można to zrealizować w następujący sposób:
#!/usr/bin/env bash

if [[ -w "$1" ]]; then
  echo "ok"
else
  echo "fail" >&2
  exit 1
fi
wklejka 1

Dobrym pomysłem może być wykorzystanie w takim przypadku negacji:
#!/usr/bin/env bash

if [[ ! -w "$1" ]]; then
  echo "fail" >&2
  exit 1
fi

echo "ok"
wklejka 2

Skrócona wersja:
#!/usr/bin/env bash

[[ -w "$1" ]] || { echo "fail" >&2; exit 1; }

echo "ok"
wklejka 3