Skocz do zawartości
Jarosław Szmańda

Bash - pobranie zmiennej

Polecane posty

Cześć,

 

Jak pobrać zmienną i dodać do skryptu który ma się wykonać?

 

Np.:

 

ping domena.pl

 

I po uruchomieniu skryptu chce dostać pytanie o tą domenę aby ją wpisać w pole domena.pl - po zakończeniu i ponownym uruchomieniu to samo.

 

 

Dzięki!

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Spoofy

w8 ... do wczytywania "zmiennej" z pliku może służyć np. to

zmienna.conf:

ZMIENNA="coś"

 

skrypt.sh

#!/bin/bash

source zmienna.conf

echo $ZMIENNA

 

Dalej czekaj bo rozkminiam ocb z tym pingiem....

 

cdn...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
#!/bin/sh
echo Generowanie certyfikatu
echo Domena:
read Domena
{
cd
devil www options $domena sslonly off
source Letsencrypt.sh
sign_domain $domena xx.185.yy.169 php
devil www options $domena sslonly on
} &> /dev/null
echo Wygenerowano certyfikat dla domeny $domena
./ssl.sh
Generowanie certyfikatu
Domena:
123.pl
Wygenerowano certyfikat dla domeny
[Błąd] Nieprawidłowa składnia polecenia
./ssl.sh: source: not found
./ssl.sh: sign_domain: not found
[Błąd] Nieprawidłowa składnia polecenia

Pomożecie?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Spoofy

Pomożemy! :D Komuna się szerzy xD


Czekaj, ale zmienną $domena masz ustawioną.... więc to gra - nie source'uje Ci "Letsencrypt.sh" tego i dlatego nie może znaleźć funkcji : sign_domain

 

;)


Edit: Prawdopodobnie dlatego że robisz "cd" czyli wracasz standardowo do katalogu domowego - upewnij się że jest tam "Letsencrypt.sh" :)


#!/bin/bash
WORKDIR="<KATALOG_GDZIE_ZNAJDUJE_SIĘ_PLIK 'Letsencrypt.sh'"
ADRES_IP="127.0.0.1"

generate() {
cd "${WORKDIR}"
if [ -e "${WORKDIR}/Letsencrypt.sh"]; then
devil www options $domena sslonly off
source Letsencrypt.sh
sign_domain $domena $ADRES_IP
devil www options $domena sslonly on
else
echo "Nie mogę znaleźć pliku 'Letsencrypt.sh'!"
exit 0
fi
}

echo "Generowanie certyfikatu let's encrypt"
echo "Podaj domenę:"
read domena
generate &> /dev/null
echo "Wygenerowano certyfikat dla domeny: $domena"

 

coś w ten deseń, hm?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Spoofy

read domena
generate

bez wywalania outputu do /dev/null - pokaż co wypluwa

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jak chcesz to robić bardziej przenośne to unikaj polecenia read, które blokuje stdin, na rzecz dodawania wsparcia dla argumentów.

 

Najprościej jak się da, przykład z pingiem.

#!/bin/bash
set -eu
ping "$1"

./ping.sh google.pl

 

Bardziej egzotyczne:

#!/bin/bash
set -eu
 
LOG=0
STRONA=""
 
for ARG in "$@"; do
    case "$ARG" in
        "--log") LOG=1 ;;
        "--no-log") LOG=0 ;;
        *) STRONA="$ARG" ;;
    esac
done
 
if [[ "$LOG" -eq 1 ]]; then
    ping "$STRONA"
else
    ping "$STRONA" &>/dev/null
fi

./egzotyka.sh --log google.pl

Edytowano przez Archi (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×