Pliki .sh - nieobslugiwane parametry

0

Cześć,

W terminalu uruchamiam pliki .sh z parametrami. W przypadku, gdy w tym samym oknie uruchamiam uruchamiam ponownie ten sam skrypt, ale z innymi parametrami to nowe parametry sa niewidoczne. Czy wiecie może dlaczego tak sie dzieje? Jesli uruchomie to samo polecenie w nowootwartzm terminalu, to dane sa pobierana prawidlowo. Czy mozna jakos oczyscic pamiec terminala (czyszczenie terminala nie pomaga), czy jest jakies poleceni, które otwiera takjakby nowe okno terminala?

0
  1. Bash czy batch?
  2. Podaj kod, bo szklana kula się zepsuła.
0

Jeśli nic nie widać to spróbuj ustawić większe fonty:
http://www.wikihow.com/Customize-the-Font-in-Windows-Command-Prompt

A tak poważnie to pokaż skrypt.

0
#!/usr/bin/env bash

usage(){cat<<EOF
  -c plik
  -s wpisz tekst
EOF
}

NAPIS=""

# Parse parameters
while getopts 'hs:c:' OPTION ; do
  case "$OPTION" in
    h)  usage exit 0;;
    s)	NAPIS=$OPTARG;;
    c)  PLIK=$OPTARG;;        
  esac
done

if [ ! -r $PLIK ]; then
  echo "Plik $PLIK nie istnieje"
  usage exit 1
fi

if [ -z "$NAPIS" ]
then
  usage	exit 1
fi

0

Twoje usage exit 1 wcale nie zatrzymuje wykonania skryptu.

0
hauleth napisał(a):

Twoje usage exit 1 wcale nie zatrzymuje wykonania skryptu.

usage exit 1 przechodzi do funkcji usage (wyświetla paramtery, nic więcej się tam nie dzieje, więc rozumiem, ze w następnym kroku wykonuje się exit 1, zamknięcie skryptu z błędem?
Albo po prostu, jeśli jest usage, to wchodzi do funkcji i pomija exit 1, więc powinniśmy zapisać:

if [ ! -r $PLIK ]; then
  echo "Plik $PLIK nie istnieje"
  exit 1
fi
0

@skolukmar: nie do końca. Zapis usage exit 1 wywołuje usage z 2 parametrami exit oraz 1. By po twoim usage wywołało się exit musisz to napisać w osobnych linijkach lub oddzielić ;.

Dodatkowo jaka jest zawartość zmiennej $PLIK oraz zapis [ ! -r $PLIK ] powinien wyglądać tak [ ! -r "$PLIK" ] bo inaczej przy pustej zmiennej $PLIK masz za mało argumentów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1