Advertisement
szilard-dobai

SO - L1 - CV

Nov 29th, 2019
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.05 KB | None | 0 0
  1. 1. Să se scrie un shell script care primește 3 numere ca și argumente pe linie de comandă și afișeaza cel mai mare dintre ele.
  2. if test $# -ne 3
  3. then
  4. echo "wrong arguments"
  5. exit -1
  6. fi
  7.  
  8. a=$1
  9. b=$2
  10. c=$3
  11.  
  12. if test $a -ge $b && test $a -ge $c
  13. then
  14. echo $a
  15. elif test $b -ge $a && test $b -ge $c
  16. then
  17. echo $b
  18. else
  19. echo $c
  20. fi
  21.  
  22.  
  23. 2. Să se scrie un shell script care primește 3 argumente pe linie de comandă: primul și al treilea argument vor reprezenta operanzii, iar al doilea va reprezenta un operator aritmetic. Să se efectueze operația primită și să se afișeze rezultatul.
  24. if test $# -ne 3
  25. then
  26. echo "wrong arguments"
  27. exit -1
  28. fi
  29.  
  30. #if test "$2" != "+" && test "$2" != "-" && test "$2" != "*" && test "$2" != "/" && test "$2" != "%"
  31. #then
  32. # echo "wrong operand"
  33. # exit -2
  34. #fi
  35.  
  36. a1=$1
  37. op=$2
  38. a2=$3
  39.  
  40. case "$op" in
  41. "+") echo `expr $a1 + $a2`;;
  42. "-") echo `expr $a1 - $a2`;;
  43. "*") echo $(($a1 * $a2));;
  44. "/") echo `expr $a1 / $a2`;;
  45. "%") echo `expr $a1 % $a2`;;
  46. *) echo "wrong operand";;
  47. esac
  48.  
  49.  
  50.  
  51. 3. Să se scrie un shell script care afișează un mesaj personalizat după cum urmează: "<Salut>, <Username>!"
  52. person=$(whoami)
  53. time=$(date +"%H")
  54.  
  55. if [ $time -ge 6 ] && [ $time -lt 12 ]
  56. then
  57. salut="buna dimineata"
  58. elif [ $time -ge 12 ] && [ $time -lt 18 ]
  59. then
  60. salut="buna ziua"
  61. elif [ $time -ge 18 ] && [ $time -lt 22 ]
  62. then
  63. salut="buna seara"
  64. else
  65. salut="noapte buna"
  66. fi
  67.  
  68. echo "$salut $person"
  69.  
  70.  
  71.  
  72. 4. Să se scrie un shell script care primește ca parametru un director și un caracter după forma: set_mode.sh <director> <caracter>. Shell script-ul va scana acel director (recursiv/nerecursiv) și pentru toate fisierele cu extensia .txt va seta dreptul după cum primește ca parametru.
  73. if [ $# -ne 2 ]
  74. then
  75. echo "wrong arguments"
  76. exit -1
  77. fi
  78.  
  79. dir=$1
  80. com=$2
  81.  
  82. if [ "$com" != "r" ] && [ "$com" != "w" ] && [ "$com" != "x" ]
  83. then
  84. echo "wrong permission"
  85. exit -2
  86. fi
  87.  
  88. #if test -f "$dir"
  89. #then
  90. # if [ ${dir: -4} == ".txt" ]
  91. # then
  92. # (chmod u=$com $dir)
  93. # fi
  94. #fi
  95.  
  96. for f in $dir/*.txt; do
  97. chmod u=$com $f
  98. done
  99.  
  100.  
  101. 5. Să se scrie un shell script care primește ca parametru un director și un fișier de ieșire după forma: count.sh <director> <output_file>. Shell script-ul va scana acel director și pentru fiecare fișier cu extensia .txt va afla numărul de caractere și va scrie în fișierul de ieșire pe câte o linie numele fișierului urmat de numărul de caractere găsit. La sfârșit, în fișierul de ieșire se va scrie o linie ce va conține numărul total de caractere sub forma "TOTAL <nr caractere>"
  102. # asta-i varianta cheap, but it works so why not
  103. if [ $# -ne 2 ]
  104. then
  105. echo "wrong arguments"
  106. exit -1
  107. fi
  108.  
  109. dir=$1
  110. files=""
  111. output=$2
  112.  
  113. for f in $dir/*.txt; do
  114. files+=" $f"
  115. done
  116.  
  117. (wc -m $files >> $output)
  118.  
  119. # varianta "full"
  120. if [ $# -ne 2 ]
  121. then
  122. echo "wrong arguments"
  123. exit -1
  124. fi
  125.  
  126. dir=$1
  127. total=0
  128. chars=0
  129. output=$2
  130.  
  131. for f in $dir/*.txt; do
  132. (wc -m $f >> $output)
  133. chars=$(wc -m <$f)
  134. total=`expr $total + $chars`
  135. done
  136.  
  137. echo "TOTAL: $total" >> $output
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement