[bash] zmienna prosto z lini

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

hug0l
Użytkownik
Posty: 30
Rejestracja: 2005-01-26, 15:54
Lokalizacja: z nienacka

[bash] zmienna prosto z lini

Post autor: hug0l »

Siemka,
Mam takie pytanie. Jak zrobic skrypt taki, ze po wywolaniu skryptu wraz z jakims argumentem (np. skrypt poteguj: ~/bin/poteguj 10) w skrypcie mogl operowac tym argumentem ? Bo przeczytalem kilka textow ale tam mozna bylo bawic sie zmiennymi ktore sam wczesniej w skrypcie zdefiniowalem ? Chyba udalo mi sie w miare wyraznie wyrazic?
Awatar użytkownika
gaia
Użytkownik
Posty: 598
Rejestracja: 2004-06-12, 10:10
Lokalizacja: rhea
Kontakt:

Re: [bash] zmienna prosto z lini

Post autor: gaia »

$1 to pierwszy parametr, $2 to drugi... $0 to nazwa skryptu.
nie, nie wyraziłeś się jasno.
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: [bash] zmienna prosto z lini

Post autor: mina86 »

$# to liczba argumentów, przykład (nie testowałem, ale powinno działać):

Kod: Zaznacz cały

#!/bin/bash
while [ "$1" ]; do
    echo "$1^2" = $(($1*$1))"
    shift
done
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
hug0l
Użytkownik
Posty: 30
Rejestracja: 2005-01-26, 15:54
Lokalizacja: z nienacka

Re: [bash] zmienna prosto z lini

Post autor: hug0l »

gaia pisze:$1 to pierwszy parametr, $2 to drugi... $0 to nazwa skryptu.
nie, nie wyraziłeś się jasno.
Ale mimo wszystko udało ci sie pomóc. Wielkie dzięki.
Awatar użytkownika
dozzie
Użytkownik
Posty: 855
Rejestracja: 2004-06-01, 13:15
Lokalizacja: Wrocław
Kontakt:

Re: [bash] zmienna prosto z lini

Post autor: dozzie »

...${10} to dziesiąty argument, ${11} to jedenasty argument,...
-zsh
#!/bin/bash
#!/usr/bin/perl -w
Awatar użytkownika
Sad Mephisto
Administrator
Posty: 2824
Rejestracja: 2004-05-22, 13:24
Lokalizacja: Zabrze
Kontakt:

Re: [bash] zmienna prosto z lini

Post autor: Sad Mephisto »

A $@ to wszystkie argumenty razem wzięte :D
[i]Thank you for noticing this notice. Now that you've noticed this notice, you may have noticed that this notice is noticably unnoticable.
$ python -c "print int(''.join(map(lambda x: str(len(x)),'Kto z woli i myśli zapragnie Pi spisać cyfry ten zdoła.'.split())))/1e+10"[/i]
hug0l
Użytkownik
Posty: 30
Rejestracja: 2005-01-26, 15:54
Lokalizacja: z nienacka

Re: [bash] zmienna prosto z lini

Post autor: hug0l »

Wow ... nie liczylem ze taką pomoc otrzymam. Wielkie dzięki
Awatar użytkownika
gaia
Użytkownik
Posty: 598
Rejestracja: 2004-06-12, 10:10
Lokalizacja: rhea
Kontakt:

Re: [bash] zmienna prosto z lini

Post autor: gaia »

dozzie :) przepraszam że nie napisałam o tym. niech sam poszuka
pozdrawiam
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: [bash] zmienna prosto z lini

Post autor: mina86 »

$* to tez wszystkie ;) Przyczym "$@" to wszystkie i kazdy jest jako oddzielny paremtr, a "$*" to wszystkie jako jeden parametr. Jak się użyje bez apostrofów to wówczas jeżeli jakiś argument miał spacje (tzn. no wiadomo o co chodzi) zostanie podzielony na kilka, np:

Kod: Zaznacz cały

echo 'printf "Parametr: %s\n" "$*"'
printf "Parametr: %s\n" "$*"
echo 'printf "Parametr: %s\n" "$@"'
printf "Parametr: %s\n" "$@"
echo 'printf "Parametr: %s\n" $*'
printf "Parametr: %s\n" $*
echo 'printf "Parametr: %s\n" $@'
printf "Parametr: %s\n" $@
Należy to zapisać jako test.sh i odpalić: bash test.sh arg1 arg2 'arg 3'
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
ODPOWIEDZ