From a0eab5733327aaa77a2c6cfac00e48c0ea9c682c Mon Sep 17 00:00:00 2001 From: CreDiTivE Date: Mon, 11 Jun 2018 17:08:15 +0300 Subject: [PATCH 01/18] Done 1,2,3,4,5 --- ex01/hello_world.sh | 6 ++++++ ex02/ex02.sh | 6 ++++++ ex03/ex03.sh | 20 +++++++++++++++++++ ex04/ex04.sh | 8 ++++++++ ex05/ex05.sh | 47 +++++++++++++++++++++++++++++++++++++++++++++ ex06/ex06.sh | 13 +++++++++++++ 6 files changed, 100 insertions(+) create mode 100755 ex01/hello_world.sh create mode 100755 ex02/ex02.sh create mode 100755 ex03/ex03.sh create mode 100755 ex04/ex04.sh create mode 100755 ex05/ex05.sh create mode 100755 ex06/ex06.sh diff --git a/ex01/hello_world.sh b/ex01/hello_world.sh new file mode 100755 index 0000000..084fa34 --- /dev/null +++ b/ex01/hello_world.sh @@ -0,0 +1,6 @@ +#!/bin/bash +if ! [ -z $1 ]; then + echo "Hello, $1!" +else + echo "Hello, World!" +fi diff --git a/ex02/ex02.sh b/ex02/ex02.sh new file mode 100755 index 0000000..2581942 --- /dev/null +++ b/ex02/ex02.sh @@ -0,0 +1,6 @@ +#!/bin/bash +str=$( echo $1 | tr " " "\n" ) +for i in $str +do + ls -R | grep -Fi $i || echo "the searched PATH is unexisting" +done diff --git a/ex03/ex03.sh b/ex03/ex03.sh new file mode 100755 index 0000000..0dbd0a7 --- /dev/null +++ b/ex03/ex03.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +if [ -z $1 ]; then + exit 1 +fi + +if ![ -z $1]; then + touch .f + for i in "${@:2}" + do + if [ $i eq 1 ]; then + exit 0 + fi + grep -in $i $1 > .f + n=$(cat .f | wc -l) + echo "$i $n" + awk -F: '{print $1}' .f + done + rm .f +fi diff --git a/ex04/ex04.sh b/ex04/ex04.sh new file mode 100755 index 0000000..d401457 --- /dev/null +++ b/ex04/ex04.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +if [ -z $1 ] || [ -z $2 ]; then + exit 1 +fi + +echo $2 | cut -d'/' -f 2 +grep -in $1 $2 | cut -d : -f 1 diff --git a/ex05/ex05.sh b/ex05/ex05.sh new file mode 100755 index 0000000..4a5c532 --- /dev/null +++ b/ex05/ex05.sh @@ -0,0 +1,47 @@ +#!/bin/bash +if [ -z $2 ]; then + echo "0" + exit 0 +fi + +if ! [[ $2 =~ [[:digit:]] ]]; then + echo "Error.." + exit 1 +fi + +flag=$1 +count=0 +sum=0 +odd_sum=0 +even_sum=0 +while [ "$#" -gt "0" ] +do + if ! [ "$count" == "0" ]; then + let sum+=$1 + fi + if [ "$flag" == "-o" ]; then + if [ $(($1 % 2)) == 1 ]; then + let odd_sum+=$1 + fi + fi + if [ "$flag" == "-e" ]; then + if [ $(($1 % 2)) == 0 ]; then + let even_sum+=$1 + fi + fi + let count+=1 + shift +done +let count-=1 +if [ "$flag" == "-m" ]; then + echo $[$sum/$count] | bc +elif [ "$flag" == "-o" ]; then + echo $odd_sum | bc +elif [ "$flag" == "-e" ]; then + echo $even_sum | bc +elif [ "$flag" == "-s" ]; then + echo $sum | bc +else + echo "Error.." + exit 1 +fi diff --git a/ex06/ex06.sh b/ex06/ex06.sh new file mode 100755 index 0000000..30b7a6b --- /dev/null +++ b/ex06/ex06.sh @@ -0,0 +1,13 @@ +#!/bin/bash +map() { + arg=$1 + for i in "$@" + do + shift 1 + $arg $i + done +} + +if [ $1 ]; then + map $@ +fi From cb2fc8597ff4dccadb8e8ed7d158e02c11514799 Mon Sep 17 00:00:00 2001 From: alexander Date: Mon, 11 Jun 2018 22:07:45 +0300 Subject: [PATCH 02/18] ex03 debug --- ex03/ex03.sh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ex03/ex03.sh b/ex03/ex03.sh index 0dbd0a7..468c25d 100755 --- a/ex03/ex03.sh +++ b/ex03/ex03.sh @@ -4,13 +4,10 @@ if [ -z $1 ]; then exit 1 fi -if ![ -z $1]; then +if ! [ -z $1 ]; then touch .f for i in "${@:2}" do - if [ $i eq 1 ]; then - exit 0 - fi grep -in $i $1 > .f n=$(cat .f | wc -l) echo "$i $n" From 1a07a25629588a4e26ef722250d42b6f30a17d8d Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 12 Jun 2018 12:58:27 +0300 Subject: [PATCH 03/18] ex06 done --- ex06/ex06.sh | 5 +++-- ex06/map.txt] | 0 ex06/test1 | 0 ex06/test2 | 0 ex06/test3 | 0 ex06/test4 | 0 ex06/test5 | 0 ex06/touch | 0 8 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 ex06/map.txt] create mode 100644 ex06/test1 create mode 100644 ex06/test2 create mode 100644 ex06/test3 create mode 100644 ex06/test4 create mode 100644 ex06/test5 create mode 100644 ex06/touch diff --git a/ex06/ex06.sh b/ex06/ex06.sh index 30b7a6b..480a84c 100755 --- a/ex06/ex06.sh +++ b/ex06/ex06.sh @@ -1,10 +1,11 @@ #!/bin/bash map() { arg=$1 + shift for i in "$@" do - shift 1 - $arg $i + shift + eval "$arg $i" done } diff --git a/ex06/map.txt] b/ex06/map.txt] new file mode 100644 index 0000000..e69de29 diff --git a/ex06/test1 b/ex06/test1 new file mode 100644 index 0000000..e69de29 diff --git a/ex06/test2 b/ex06/test2 new file mode 100644 index 0000000..e69de29 diff --git a/ex06/test3 b/ex06/test3 new file mode 100644 index 0000000..e69de29 diff --git a/ex06/test4 b/ex06/test4 new file mode 100644 index 0000000..e69de29 diff --git a/ex06/test5 b/ex06/test5 new file mode 100644 index 0000000..e69de29 diff --git a/ex06/touch b/ex06/touch new file mode 100644 index 0000000..e69de29 From 42fefa83ab1aba5b8da1a594d75b0cc711034c4f Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 12 Jun 2018 13:41:09 +0300 Subject: [PATCH 04/18] ex07 Done --- ex07/ex07.sh | 13 +++++++++++++ ex07/test_ex07.sh | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100755 ex07/ex07.sh diff --git a/ex07/ex07.sh b/ex07/ex07.sh new file mode 100755 index 0000000..d70aad3 --- /dev/null +++ b/ex07/ex07.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +if [ -z "$1" ] || [ "$1" -eq 0 ]; then + exit 1 +fi + +answer=$(head "-$1" resourses/surnames.txt | grep -v 'Q-Chem' | sed "s/\.//g ; s/\-//g" | cat ) + +if [[ $answer ]]; then + echo "$answer" +else + echo '' +fi diff --git a/ex07/test_ex07.sh b/ex07/test_ex07.sh index 2980d2a..9f838b8 100755 --- a/ex07/test_ex07.sh +++ b/ex07/test_ex07.sh @@ -21,13 +21,13 @@ } @test "Test on 0 lines returns error" { - run ex07.sh 0 + run bash ex07.sh 0 [ "$status" -eq 1 ] } @test "Test on 2 lines return empty string" { - run ex07.sh 2 + run bash ex07.sh 2 [ "$status" -eq 0 ] [ "$output" = $'' ] From 3a7c3c98dc9a3ff10f68a29922cf393839f4aea2 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 12 Jun 2018 15:04:34 +0300 Subject: [PATCH 05/18] ex08 completed --- ex08/ex08.sh | 20 ++++++++++++++++++++ ex08/test_ex08.sh | 7 ++----- 2 files changed, 22 insertions(+), 5 deletions(-) create mode 100755 ex08/ex08.sh diff --git a/ex08/ex08.sh b/ex08/ex08.sh new file mode 100755 index 0000000..cdf0cb4 --- /dev/null +++ b/ex08/ex08.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +if [ -z $1 ] || [ $# -gt 1 ] ; then + echo "Too many(few) arguments" + exit 1 +fi + +if [ ! -f "$1" ]; then + echo "Error.." + exit 1 +fi + +answer="" +words=( zeroes ones twoes threes fours fives sixs sevens nines ) +for (( i=0; i<=8; i++ )) +do + answer+=$(grep -o "$i" $1 | wc -l) + answer+=" ${words[$i]}, " +done +echo "$answer" | sed 's/..$//' diff --git a/ex08/test_ex08.sh b/ex08/test_ex08.sh index 3ab85ed..76a87a4 100755 --- a/ex08/test_ex08.sh +++ b/ex08/test_ex08.sh @@ -5,7 +5,7 @@ [ "$status" -eq 0 ] [ "$output" = "10 zeroes, 13 ones, 4 twoes, 7 threes, 3 fours, 3 fives, 0 sixs, 0 sevens, 0 eights, 1 nines" ] - +} @test "Too many arguments" { run bash ex08.sh resources/digitfile.txt digit.txt @@ -15,16 +15,13 @@ } @test "Too few arguments" { - run bash ex08.sh - + run bash ex08.sh [ "$status" -eq 1 ] [ "$output" = "Too many(few) arguments" ] } @test "File doesn't exist" { run bash ex08.sh resources/digitfile - [ "$status" -eq 1 ] [ "$output" = "Error.." ] } - From 07cd27a04e20ee2a6516c536628bf1fdd4dbb14a Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 12 Jun 2018 15:05:54 +0300 Subject: [PATCH 06/18] Delete map.txt] --- ex06/map.txt] | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ex06/map.txt] diff --git a/ex06/map.txt] b/ex06/map.txt] deleted file mode 100644 index e69de29..0000000 From d9dd5fd8a19646ac0bdbc4f3a948b8aec2325e78 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 12 Jun 2018 15:06:02 +0300 Subject: [PATCH 07/18] Delete touch --- ex06/touch | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ex06/touch diff --git a/ex06/touch b/ex06/touch deleted file mode 100644 index e69de29..0000000 From 912572ca892507fb177f5b91800e8c5398907c84 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 12 Jun 2018 15:06:09 +0300 Subject: [PATCH 08/18] Delete test1 --- ex06/test1 | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ex06/test1 diff --git a/ex06/test1 b/ex06/test1 deleted file mode 100644 index e69de29..0000000 From 970f94378c110702b9e85c2a0a26ab9db94796a5 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 12 Jun 2018 15:06:15 +0300 Subject: [PATCH 09/18] Delete test2 --- ex06/test2 | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ex06/test2 diff --git a/ex06/test2 b/ex06/test2 deleted file mode 100644 index e69de29..0000000 From 8e23c9087916971b05f52fb448b67f2abb75de3a Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 12 Jun 2018 15:08:34 +0300 Subject: [PATCH 10/18] Delete test5 --- ex06/test5 | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ex06/test5 diff --git a/ex06/test5 b/ex06/test5 deleted file mode 100644 index e69de29..0000000 From 1164432ed8f661bf0ec0362978d306c9b8e8f274 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 12 Jun 2018 15:08:39 +0300 Subject: [PATCH 11/18] Delete test4 --- ex06/test4 | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ex06/test4 diff --git a/ex06/test4 b/ex06/test4 deleted file mode 100644 index e69de29..0000000 From d429e8df72bb2976436336be5943608406937cb1 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 12 Jun 2018 15:08:45 +0300 Subject: [PATCH 12/18] Delete test3 --- ex06/test3 | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ex06/test3 diff --git a/ex06/test3 b/ex06/test3 deleted file mode 100644 index e69de29..0000000 From 22557be6236ffadc661de21579dca8e10a329a78 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 12 Jun 2018 15:21:59 +0300 Subject: [PATCH 13/18] ex08 final --- ex08/ex08.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ex08/ex08.sh b/ex08/ex08.sh index cdf0cb4..894705f 100755 --- a/ex08/ex08.sh +++ b/ex08/ex08.sh @@ -11,8 +11,9 @@ if [ ! -f "$1" ]; then fi answer="" -words=( zeroes ones twoes threes fours fives sixs sevens nines ) -for (( i=0; i<=8; i++ )) +words=( zeroes ones twoes threes fours fives sixs sevens eights nines ) +wlen=${#words[@]} +for (( i=0; i<${wlen}; i++ )) do answer+=$(grep -o "$i" $1 | wc -l) answer+=" ${words[$i]}, " From 932ad0f59176f637cba28ba22f8768fcd389357c Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 12 Jun 2018 15:28:56 +0300 Subject: [PATCH 14/18] ex08 final --- bats | 1 + ex05/ex05.sh | 36 ++---------------------------------- ex06/map.txt] | 0 ex06/test1 | 0 ex06/test2 | 0 ex06/test3 | 0 ex06/test4 | 0 ex06/test5 | 0 ex06/touch | 0 ex09/ex09.sh | 9 +++++++++ ex09/test_ex09.sh | 16 ++++++++-------- 11 files changed, 20 insertions(+), 42 deletions(-) create mode 160000 bats delete mode 100644 ex06/map.txt] delete mode 100644 ex06/test1 delete mode 100644 ex06/test2 delete mode 100644 ex06/test3 delete mode 100644 ex06/test4 delete mode 100644 ex06/test5 delete mode 100644 ex06/touch create mode 100755 ex09/ex09.sh diff --git a/bats b/bats new file mode 160000 index 0000000..0360811 --- /dev/null +++ b/bats @@ -0,0 +1 @@ +Subproject commit 03608115df2071fff4eaaff1605768c275e5f81f diff --git a/ex05/ex05.sh b/ex05/ex05.sh index 4a5c532..2a01526 100755 --- a/ex05/ex05.sh +++ b/ex05/ex05.sh @@ -2,7 +2,6 @@ if [ -z $2 ]; then echo "0" exit 0 -fi if ! [[ $2 =~ [[:digit:]] ]]; then echo "Error.." @@ -12,36 +11,5 @@ fi flag=$1 count=0 sum=0 -odd_sum=0 -even_sum=0 -while [ "$#" -gt "0" ] -do - if ! [ "$count" == "0" ]; then - let sum+=$1 - fi - if [ "$flag" == "-o" ]; then - if [ $(($1 % 2)) == 1 ]; then - let odd_sum+=$1 - fi - fi - if [ "$flag" == "-e" ]; then - if [ $(($1 % 2)) == 0 ]; then - let even_sum+=$1 - fi - fi - let count+=1 - shift -done -let count-=1 -if [ "$flag" == "-m" ]; then - echo $[$sum/$count] | bc -elif [ "$flag" == "-o" ]; then - echo $odd_sum | bc -elif [ "$flag" == "-e" ]; then - echo $even_sum | bc -elif [ "$flag" == "-s" ]; then - echo $sum | bc -else - echo "Error.." - exit 1 -fi + +case $flag in diff --git a/ex06/map.txt] b/ex06/map.txt] deleted file mode 100644 index e69de29..0000000 diff --git a/ex06/test1 b/ex06/test1 deleted file mode 100644 index e69de29..0000000 diff --git a/ex06/test2 b/ex06/test2 deleted file mode 100644 index e69de29..0000000 diff --git a/ex06/test3 b/ex06/test3 deleted file mode 100644 index e69de29..0000000 diff --git a/ex06/test4 b/ex06/test4 deleted file mode 100644 index e69de29..0000000 diff --git a/ex06/test5 b/ex06/test5 deleted file mode 100644 index e69de29..0000000 diff --git a/ex06/touch b/ex06/touch deleted file mode 100644 index e69de29..0000000 diff --git a/ex09/ex09.sh b/ex09/ex09.sh new file mode 100755 index 0000000..6637cd6 --- /dev/null +++ b/ex09/ex09.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +if [ -z $1 ] || [ -z $2 ]; then + exit 1 +fi + +if [ $1 -eq "-u" | "--url" ]; then + grep -Eo "https:\/\/([[:alnum:]]|\.|\/)+" $2 +fi diff --git a/ex09/test_ex09.sh b/ex09/test_ex09.sh index 7dad67c..4019883 100755 --- a/ex09/test_ex09.sh +++ b/ex09/test_ex09.sh @@ -2,28 +2,28 @@ @test "Find emails in file without emails" { run bash ex09.sh -e resources/email1.txt - + [ "$status" -eq 1 ] [ "$output" = "" ] } @test "Find emails in file with emails" { run bash ex09.sh -e resources/email2.txt - + [ "$status" -eq 0 ] [ "$output" = "craig@bbhost.us" ] } @test "Find urls in file without urls" { run bash ex09.sh -u resources/url1.txt - + [ "$status" -eq 1 ] [ "$output" = "" ] } @test "Find urls in file with urls" { run bash ex09.sh -u resources/url2.txt - + [ "$status" -eq 0 ] [ "$output" = "https://en.emailfake.com/usjima1129.ga/craig https://mail.google.com/mail/u/0/" ] @@ -31,14 +31,14 @@ https://mail.google.com/mail/u/0/" ] @test "Find emails in file with emails and urls" { run bash ex09.sh -e resources/emailurl.txt - + [ "$status" -eq 0 ] [ "$output" = "craig@bbhost.us" ] } @test "Find urls in file with emails and urls" { run bash ex09.sh -u resources/emailurl.txt - + [ "$status" -eq 0 ] [ "$output" = "https://en.emailfake.com/usjima1129.ga/craig https://mail.google.com/mail/u/0/" ] @@ -46,7 +46,7 @@ https://mail.google.com/mail/u/0/" ] @test "Test long flag for email" { run bash ex09.sh --email resources/emailurl.txt - + [ "$status" -eq 0 ] [ "$output" = "craig@bbhost.us" ] } @@ -54,7 +54,7 @@ https://mail.google.com/mail/u/0/" ] @test "Test long flag for url" { run bash ex09.sh --url resources/emailurl.txt - + [ "$status" -eq 0 ] [ "$output" = "https://en.emailfake.com/usjima1129.ga/craig https://mail.google.com/mail/u/0/" ] From 7d14fc29afe698c15a84b7d46856209d7b740146 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 12 Jun 2018 15:50:28 +0300 Subject: [PATCH 15/18] ex09 completed --- ex09/ex09.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ex09/ex09.sh b/ex09/ex09.sh index 6637cd6..0a4fb56 100755 --- a/ex09/ex09.sh +++ b/ex09/ex09.sh @@ -4,6 +4,10 @@ if [ -z $1 ] || [ -z $2 ]; then exit 1 fi -if [ $1 -eq "-u" | "--url" ]; then - grep -Eo "https:\/\/([[:alnum:]]|\.|\/)+" $2 +if [ "$1" = "-u" ] || [ "$1" = "--url" ]; then + grep -Po '(^|\t)https:[A-Za-z0-9\/\.]+' $2 +elif [ "$1" = "-e" ] || [ "$1" = "--email" ]; then + grep -Po '(^|\t)[A-Za-z0-9\.]+@[A-Za-z0-9\.]+\.[A-Za-z0-9\.]+' $2 +else + exit 1 fi From f7686d3774d87f8cb6ad0eceaf307d81abaccf30 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 12 Jun 2018 16:11:05 +0300 Subject: [PATCH 16/18] ex10 completed --- ex10/ex10.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100755 ex10/ex10.sh diff --git a/ex10/ex10.sh b/ex10/ex10.sh new file mode 100755 index 0000000..f3fd7bb --- /dev/null +++ b/ex10/ex10.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ ! -f "$1" ];then + exit 1 +fi + +for i in $@ +do + echo "$(awk 'END{print NR}' $i) $i" +done From 9e4761a3a337463c537ae77c57dc639f76089ee7 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 12 Jun 2018 17:14:12 +0300 Subject: [PATCH 17/18] ex05 completed --- ex05/ex05.sh | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/ex05/ex05.sh b/ex05/ex05.sh index 2a01526..0d21d2f 100755 --- a/ex05/ex05.sh +++ b/ex05/ex05.sh @@ -1,15 +1,31 @@ #!/bin/bash + if [ -z $2 ]; then echo "0" exit 0 - -if ! [[ $2 =~ [[:digit:]] ]]; then - echo "Error.." - exit 1 fi -flag=$1 -count=0 -sum=0 +summ=0 + +for i in $@ +do + if [ "$1" == "-s" ]; then + summ=$(echo "$summ + $i" | bc) + elif [ "$1" == "-m" ]; then + summ=$(echo "$summ + $i" | bc) + elif [ "$1" == "-e" ]; then + [ $((i%2)) -eq 0 ] && summ=$(echo "$summ + $i" | bc) + elif [ "$1" == "-o" ]; then + [ $((i%2)) -ne 0 ] && summ=$(echo "$summ + $i" | bc) + else + echo "Error.." + exit 1 + fi +done + +if [ "$1" == "-m" ]; then + shift 1 + summ=$(echo $(( "$summ / $#" ))) +fi -case $flag in +echo "$summ" From cc08a856193098450497303e12d02b1818566ea8 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 12 Jun 2018 17:20:39 +0300 Subject: [PATCH 18/18] deleted bats --- bats | 1 - 1 file changed, 1 deletion(-) delete mode 160000 bats diff --git a/bats b/bats deleted file mode 160000 index 0360811..0000000 --- a/bats +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 03608115df2071fff4eaaff1605768c275e5f81f