[Bash] Przygotuj skrypt przyjmujący 3 argumenty...

IBialyI
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 9 gru 2019, o 20:04
Płeć: Mężczyzna
wiek: 22

[Bash] Przygotuj skrypt przyjmujący 3 argumenty...

Post autor: IBialyI »

Przygotuj skrypt przyjmujący 3 argumenty

Wynikiem wykonania skryptu ma być:
1.Wstawienie daty w formacie YYYY-MM-DD HH:MM do pliku o nazwie takiej jak 3 argument
1a. W wypadku nie przekazania 3 argumentu skrypt ustawia nazwę pliku na numer indeksu studenta
2. dopisanie do pliku wyniku z mnożenia argumentów 1 i 2
3. dopisanie do pliku tekstu "nazwa skryptu: ilość przekazanych zmiennych: " wartości liczbowe mają zostać uzupełnionie automatycznie.
4. dopisanie do pliku tekstu: "Nazwa użytkownika to: " wartośc ma być uzupełniona automatycznie
5. dopisanie do pliku zajętości dysków systemowych w wartościach "human readable"
6. dopisanie do pliku zawartości katalogu domowego użytkownika wraz z plikami ukrytymi (niezależnie od nazwy użytkownika) w formie długiej listy w wartościach "human readable"

Czy może ktoś pomóc z powyższym?
Awatar użytkownika
Gosda
Użytkownik
Użytkownik
Posty: 340
Rejestracja: 29 cze 2019, o 19:46
Płeć: Mężczyzna
Lokalizacja: Oulu
Podziękował: 42 razy
Pomógł: 60 razy

Re: [Bash] Przygotuj skrypt przyjmujący 3 argumenty...

Post autor: Gosda »

Ja, jeśli zaprezentujesz jakąkolwiek pracę samodzielną. Co już masz, co nie działa, czego nie rozumiesz?
IBialyI
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 9 gru 2019, o 20:04
Płeć: Mężczyzna
wiek: 22

Re: [Bash] Przygotuj skrypt przyjmujący 3 argumenty...

Post autor: IBialyI »

Potrzebuje aby ktoś wytłumaczył jak ustawić prawidłowy format daty w skrypcie,
jak dokładnie przedstawia się argumenty w skrypcie.(Dopiero zaczynam z przygodę z bashem)
Nie chcę aby ktoś robił to zadanie za mnie, potrzebuję jedynie wskazówki co można zrobić w poszczególnych punktach.
Awatar użytkownika
Gosda
Użytkownik
Użytkownik
Posty: 340
Rejestracja: 29 cze 2019, o 19:46
Płeć: Mężczyzna
Lokalizacja: Oulu
Podziękował: 42 razy
Pomógł: 60 razy

Re: [Bash] Przygotuj skrypt przyjmujący 3 argumenty...

Post autor: Gosda »

Podpowiem, że sam dzień miesiąca można wypisać przez date +%d, jak poczytasz man date, to będziesz wiedzieć, jak uzyskać pozostałe pola (miesiąc, rok itd.).

Argumenty skryptu dostępne są pod zmiennymi $1 $2 $3 .... Do sprawdzania czy zmienna jest pusta można użyć test -z (ponownie więcej szczegółów na stronach podręcznika man). Możesz przejrzeć kurs na Ważniaku, nie jest idealny, ale daje jakieś pojęcie:
IBialyI
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 9 gru 2019, o 20:04
Płeć: Mężczyzna
wiek: 22

Re: [Bash] Przygotuj skrypt przyjmujący 3 argumenty...

Post autor: IBialyI »

Udało się stworzyć coś takiego,wydaje mi się że skrypt wyświetla się prawidłowo.
Czy może ktoś podpowiedzieć co ewentualnie zmienić?

Kod: Zaznacz cały

#!bin/bash

zm1=$1
zm2=$2
zm3=$3

data=`date +%Y-%m-%d"_"%H:%M`

indeks=${zm3:=0000}

echo $data > $zm3
let result=zm1*zm2
echo $result >>$zm3

echo "zm3: Ilość przekazanych zmiennych: $#" >> zm3

echo "Nazwa użytkownika to: $USER" >> $zm3

df-h >> $zm3

ls -lha /home >>$zm3

echo "Dane wrzucone do pliku" $zm3
Ostatnio zmieniony 11 gru 2019, o 20:45 przez Jan Kraszewski, łącznie zmieniany 1 raz.
Powód: Brak tagów [code].
Awatar użytkownika
Gosda
Użytkownik
Użytkownik
Posty: 340
Rejestracja: 29 cze 2019, o 19:46
Płeć: Mężczyzna
Lokalizacja: Oulu
Podziękował: 42 razy
Pomógł: 60 razy

Re: [Bash] Przygotuj skrypt przyjmujący 3 argumenty...

Post autor: Gosda »

Uruchomiłeś ten skrypt choć raz? :) Nie działa co najmniej wyświetlanie wolnego miejsca.

Kod: Zaznacz cały

#!/usr/bin/env bash
### ścieżka bezwzględna - i zabezpieczenie przed systemami, gdzie nie ma pliku /bin/bash

set -e
### skrypt przestanie działać, kiedy jakiekolwiek polecenie zwróci błąd
### przydatne są też: set -u, set -o pipefail

factor1="$1"
factor2="$2"
filename="${3:-0000}"
### nazwy zmiennych po angielsku
### takie, które mówią coś o przechowywanej wartości
### w cudzysłowie, żeby zabezpieczyć się przed spacjami itd.
### nie mam pojęcia, jak uzyskać indeks studenta :-)

{
	date "+%Y-%m-%d %H:%M"
	### backtick to stary, niezalecany sposób na wywoływanie poleceń
	### nie można go łatwo zagnieżdżać, lepsze jest $( )
	### tutaj można sobie poradzić w ogóle bez zmiennej
	### ponownie, " " dla lepszego radzenia sobie ze spacjami

	### let nie jest zalecane
	product="$((factor1 * factor2))"
	### tylko liczby całkowite są wspierane w ten sposób
	### product="$(echo "${factor1} * ${factor2}" | bc)"
	### wsparcie dla liczb niecałkowitych, ale wymaga zainstalowanego kalkulatora - bc
	echo "${product}"

	echo "$0: $#"
	### powyższe działa, jeśli skrypt jest uruchamiany: ./skrypt a nie wczytywany przez source skrypy

	echo "Nazwa użytkownika to: $USER"
	df -h
	### argumenty trzeba oddzielać od nazwy programu przynajmniej spacją

	ls -ahl "${HOME}"
	### katalog /home może nie istnieć, a jeśli istnieje, to zazwyczaj zawiera wszystkie katalogi domowe
} > "${filename}"
# żeby nie powtarzać przekierowania co linijkę...
ODPOWIEDZ