• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Bash zadanie

VPS Starter Arubacloud
0 głosów
274 wizyt
pytanie zadane 20 stycznia 2017 w Inne języki przez Bartek Grubarski Początkujący (250 p.)
Witam,
Wiecie może jak zrobić to zadanie:
"Utworzyć skrypt o nazwie minmax.sh, który ma znaleźć element minimalny i
maksymalny w wektorze n-elementowym, ponadto w skrypcie należy wyliczyć
sumę kolejnych liczb naturalnych z przedziału [a, b]. Z podanych wyżej
czynności należy wybrać (select) i wykonać tylko jedną. W skrypcie zastosować:
zmienne tablicowe, instrukcje pętli, instrukcje wyboru z menu - select,
instrukcje warunkową if lub wyboru case, instrukcje continue, instrukcje break.
Wektor z danymi należy pobrać ze wskazanego pliku tekstowego, którego nazwa
jest parametrem wejściowym. Format pliku z danymi wektora zakłada
odczytanie wszystkich wartości całkowitych rozdzielonych separatorem w
postaci średnika z pierwszego wiersza pliku tekstowego."?

Nie iwem jak zrobić odczytywyanie z wektora. Proszę o pomoc w tym aspekcie, resztę zrobię sam.

4 odpowiedzi

0 głosów
odpowiedź 20 stycznia 2017 przez Benek Szeryf (90,690 p.)
wybrane 20 stycznia 2017 przez Bartek Grubarski
 
Najlepsza

Ale ten "wektor" to jest zewnętrzny plik, z którego mam odczytać dane, a w ten sposób raczej się nie uda.

Ok, nie wiedziałem z czym konkretnie masz problem. Na początku skryptu przechwyć pierwszą linię z pliku wejściowego i podstaw ją do zmiennej string:

#!/bin/bash
string=`awk 'NR == 1 {print $0}' $1`

W tym przypadku używamy zewnętrznego programu AWK (ale można innego, np. head), do przeczytania pliku. Zmienna $1 przechowuje pierwszy argument wywołania naszego skryptu. W tym przypadku jest to nazwa pliku, który zawiera dane do przeczytania. Zakładając, że plik z danymi ma nazwę vector, wywołanie skryptu będzie wyglądać tak:

bash minmax.sh vector
komentarz 20 stycznia 2017 przez Bartek Grubarski Początkujący (250 p.)
Hmmm, a programu awk nie trzeba doinstalować?

Teraz mam taki problem, że te "dane" są rozdzielone średnikami, a później mam wykonać na nich operację. Np. mój wektor to: {1;2;3;4;5}. Czy da się to jakoś zapisać do tablicy? A może muszę tworzyć daną ilość zmiennych?
komentarz 20 stycznia 2017 przez Benek Szeryf (90,690 p.)

Standardowo AWK powinien być zainstalowany. Jeśli go nie masz, to użyj alternatywnie head:

#!/bin/bash
string=`head -n 1 $1`

Co oznacza tyle, że zostanie wypisana jedna linia z pliku i przechwycona przez zmienną string.

Czy da się to jakoś zapisać do tablicy?

Tak:

#!/bin/bash
string=`head -n 1 $1`

declare -a arr
for i in $string
do
	arr+=("$i")
done

A tak się odwołujesz do poszczególnych elementów tablicy:

for i in "${arr[@]}"
do
  echo $i
done

 

+1 głos
odpowiedź 20 stycznia 2017 przez Bartek Grubarski Początkujący (250 p.)
Wow, jesteś super! Dziękuję bardzo ;). Uratowałeś mi życie.
0 głosów
odpowiedź 20 stycznia 2017 przez Benek Szeryf (90,690 p.)
edycja 20 stycznia 2017 przez Benek

Nie iwem jak zrobić odczytywyanie z wektora. Proszę o pomoc w tym aspekcie (...)

Odczytaj linię jako łańcuch i ustaw zmienną IFS na średnik. Spróbuj sam się przekonać jak to działa, wykonując w terminalu kolejno polecenia:

string="one;two three"
for i in $string; do echo "Number: $i" ; done
IFS=";"
for i in $string; do echo "Number: $i" ; done

 

0 głosów
odpowiedź 20 stycznia 2017 przez Bartek Grubarski Początkujący (250 p.)
Ale ten "wektor" to jest zewnętrzny plik, z którego mam odczytać dane, a w ten sposób raczej się nie uda.
komentarz 20 stycznia 2017 przez Benek Szeryf (90,690 p.)

Odpisałem raz jeszcze. Następnym razem precyzuj pytanie.

Nie iwem jak zrobić odczytywyanie z wektora.

Może oznaczać wiele rzeczy.

Podobne pytania

0 głosów
2 odpowiedzi 286 wizyt
pytanie zadane 18 października 2015 w Inne języki przez toyboy Początkujący (270 p.)
0 głosów
1 odpowiedź 147 wizyt
pytanie zadane 11 listopada 2018 w C i C++ przez bastih48 Początkujący (320 p.)
0 głosów
3 odpowiedzi 91 wizyt
pytanie zadane 8 stycznia 2023 w Inne języki przez Kreks07 Nowicjusz (120 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...