Advertisement
razvanth21

T1

Nov 30th, 2019
345
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.17 KB | None | 0 0
  1. # Sa se scrie un shell script care primeste care primeste un fisier file in linia de comanda. Daca nu exista un argument, se afiseaza mesaj de utilizare si se incheie executia.
  2. # Daca file nu reprezinta un fisier obisnuit, se afiseaza mesaj de eroare si se incheie executia.
  3. # Se citesc siruri de caractere de la tastatura (stdin) pana la intalnirea sirului "Stop". Se afiseaza acele siruri ce reprezinta o cale de director, pe masura ce sunt introduse.
  4. # Se parcurge nerecursiv fiecare director si se scrie in file numarul de legaturi simbolice care incep cu majuscula si nu contin cifre in numele lor, sub forma: director: n links.
  5.  
  6. #! /bin/bash
  7.  
  8. if [ $# -ne 1 ]
  9. then
  10.     echo "Sintaxa: $0 <fisier>"
  11.     exit -1
  12. fi
  13.  
  14. if ! [ -f $1 ]
  15. then
  16.     echo "$1 is not a regular file."
  17.     exit -1
  18. fi
  19.  
  20. c=0
  21.  
  22. while read -r str
  23. do
  24.     if [ "$str" = "Stop" ]
  25.     then
  26.         break
  27.     fi
  28.  
  29.     if [ -d $str ]
  30.     then
  31.         for file in "$str"/*
  32.         do
  33.             # legatura simbolica
  34.             if [ -L $file ]
  35.             then
  36.                 # regex pt a incepe cu o majuscula si sa nu aiba cifre
  37.                 if [[ "$file" =~ ^[A-Z][^0-9]* ]]
  38.                 then
  39.                     c=$(($c + 1))
  40.                 fi
  41.             fi
  42.  
  43.             echo "$file: $c legaturi" >> $1
  44.         done
  45.     fi
  46. done < /dev/stdin
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement